/*
 * Copyright (c) Huawei Technologies Co., Ltd. 2012-2018. All rights reserved.
 * Description: avx2neon test data file
 * Author: guotaowei
 * Create: 2019-11-20
 */

#ifndef AVX2NEONTESTDATA_H
#define AVX2NEONTESTDATA_H

#include <arm_neon.h>

// 一个结构体对应一个接口测试数据模型
// 每个接口生成一组测试数据，供测试demo使用
// expect位接口返回值，其余为接口输入参数数据

typedef struct {
    int8_t a[32];
    int8_t b[32];
    int8_t expect[32];
} test_mm256_div_epi8_data_model;
static test_mm256_div_epi8_data_model g_test_mm256_div_epi8_data = {
    {-2, 30, 127, 100, 4,   8, 10, -43, -56, 102, 120, 70, 45, -12, 20, 27,
     1,  -4, 18,  50,  -49, 7, 0,  80,  8,   6,   -7,  15, 0,  9,   11, 6},
    {1,  12,  -5, 25, 2,  10, -1, -12, -6, 102, 12, 100, -45, 2, 80, 127,
     11, -42, 8,  5,  -7, 17, 20, 10,  9,  2,   12, 3,   1,   3, 4,  2},
    {-2, 2, -25, 4, 2, 0, -10, 3, 9, 1, 10, 0, -1, -6, 0, 0, 0, 0, 2, 10, 7, 0, 0, 8, 0, 3, 0, 5, 0, 3, 2, 3}};

typedef struct {
    int16_t a[16];
    int16_t b[16];
    int16_t expect[16];
} test_mm256_div_epi16_data_model;
static test_mm256_div_epi16_data_model g_test_mm256_div_epi16_data = {
    {-2, 30, 127, 100, 4, 8, 10, -43, -56, 102, 120, 70, 45, -12, 20, 27},
    {1, 12, -5, 25, 2, 10, -1, -12, -6, 102, 12, 11, -45, 2, 80, 127},
    {-2, 2, -25, 4, 2, 0, -10, 3, 9, 1, 10, 6, -1, -6, 0, 0}};

typedef struct {
    int32_t a[8];
    int32_t b[8];
    int32_t expect[8];
} test_mm256_div_epi32_data_model;
static test_mm256_div_epi32_data_model g_test_mm256_div_epi32_data = {
    {12, 30, 127, 100, 4, 8, 10, -43}, {-4, 12, -5, 25, 2, 10, -1, -12}, {-3, 2, -25, 4, 2, 0, -10, 3}};

typedef struct {
    int64_t a[4];
    int64_t b[4];
    int64_t expect[4];
} test_mm256_div_epi64_data_model;
static test_mm256_div_epi64_data_model g_test_mm256_div_epi64_data = {
    {-2, 30, 127, 100}, {1, 12, -5, 25}, {-2, 2, -25, 4}};

typedef struct {
    uint8_t a[32];
    uint8_t b[32];
    uint8_t expect[32];
} test_mm256_div_epu8_data_model;
static test_mm256_div_epu8_data_model g_test_mm256_div_epu8_data = {
    {2, 30, 127, 100, 4,  8, 10, 43, 56, 102, 120, 70, 45, 12, 20, 27,
     1, 4,  18,  50,  49, 7, 0,  80, 8,  6,   7,   15, 0,  9,  11, 6},
    {1, 12, 5, 25, 2, 10, 1, 12, 6, 102, 12, 20, 45, 2, 80, 127, 11, 42, 8, 5, 7, 17, 20, 10, 9, 2, 12, 3, 1, 3, 4, 2},
    {2, 2, 25, 4, 2, 0, 10, 3, 9, 1, 10, 3, 1, 6, 0, 0, 0, 0, 2, 10, 7, 0, 0, 8, 0, 3, 0, 5, 0, 3, 2, 3}};

typedef struct {
    uint16_t a[16];
    uint16_t b[16];
    uint16_t expect[16];
} test_mm256_div_epu16_data_model;
static test_mm256_div_epu16_data_model g_test_mm256_div_epu16_data = {
    {2, 30, 127, 100, 4, 8, 10, 43, 56, 102, 120, 70, 45, 12, 20, 27},
    {1, 12, 5, 25, 2, 10, 1, 12, 6, 102, 12, 100, 45, 2, 80, 127},
    {2, 2, 25, 4, 2, 0, 10, 3, 9, 1, 10, 0, 1, 6, 0, 0}};

typedef struct {
    uint32_t a[8];
    uint32_t b[8];
    uint32_t expect[8];
} test_mm256_div_epu32_data_model;
static test_mm256_div_epu32_data_model g_test_mm256_div_epu32_data = {
    {2, 30, 127, 100, 4, 8, 10, 43}, {1, 12, 5, 25, 2, 10, 1, 12}, {2, 2, 25, 4, 2, 0, 10, 3}};

typedef struct {
    uint64_t a[4];
    uint64_t b[4];
    uint64_t expect[4];
} test_mm256_div_epu64_data_model;
static test_mm256_div_epu64_data_model g_test_mm256_div_epu64_data = {{2, 30, 127, 100}, {1, 12, 5, 25}, {2, 2, 25, 4}};

typedef struct {
    float32_t a[8];
    float32_t b[8];
    float32_t expect[8];
} test_mm256_div_ps_data_model;
static test_mm256_div_ps_data_model g_test_mm256_div_ps_data = {
    {2.4, 3.8, -5.0, 100, -20.4, 74.6, -50.8, 10.0},
    {1.2, -2.0, 1.0, -102, 10.1, 12.4, -32.0, 9.8},
    {2.000000, -1.900000, -5.000000, -0.980392, -2.019802, 6.016129, 1.587500, 1.020408}};

typedef struct {
    float64_t a[4];
    float64_t b[4];
    float64_t expect[4];
} test_mm256_div_pd_data_model;
static test_mm256_div_pd_data_model g_test_mm256_div_pd_data = {
    {2.4, -3.8, 5.0, -10.0}, {1.2, 2.2, -1.0, -9.8}, {2.00, -1.727272727, -5.00, 1.0204081632}};

typedef struct {
    int8_t a[64];
    int8_t b[64];
    int8_t expect[64];
} test_mm512_div_epi8_data_model;
static test_mm512_div_epi8_data_model g_test_mm512_div_epi8_data = {
    {47,   25,  -22,  -58,  -99,  -61, 78,   -119, -15,  94,   44, -109, -49, 19,  -102, -13,
     23,   77,  -111, 83,   -118, -16, -100, -89,  66,   -43,  58, 47,   9,   47,  41,   42,
     -122, -25, -26,  -95,  -72,  -47, -92,  119,  -115, 85,   6,  65,   -89, -43, 92,   -100,
     -59,  96,  74,   -117, 65,   -28, 28,   91,   -100, -100, 59, -71,  -5,  126, 110,  -22},
    {19,  101, -53, -1,  29,  -94, -14, 2,   84,   -88,  100, -72, 96, 87,   77,  112, 68,  1,    91,  53, 43, -95,
     81,  -70, 47,  -31, -82, 14,  107, -35, -123, -104, -74, 6,   50, -84,  -83, -14, 36,  -33,  -61, 47, 46, -46,
     -66, -83, -71, -68, -99, 41,  33,  -24, -4,   -20,  65,  -66, 87, -118, -41, 20,  -52, -113, 53,  -10},
    {2,  0, 0,  58, -3, 0, -5, -59, 0,   -1, 0, 1,  0,  0, -1, 0,  0,  77, -1, 1, -2, 0,
     -1, 1, 1,  1,  0,  3, 0,  -1,  0,   0,  1, -4, 0,  1, 0,  3,  -2, -3, 1,  1, 0,  -1,
     1,  0, -1, 1,  0,  2, 2,  4,   -16, 1,  0, -1, -1, 0, -1, -3, 0,  -1, 2,  2}};

typedef struct {
    int16_t a[32];
    int16_t b[32];
    int16_t expect[32];
} test_mm512_div_epi16_data_model;
static test_mm512_div_epi16_data_model g_test_mm512_div_epi16_data = {
    {-27764, 18989, 14860,  -1117,  23487,  -31492, -20299, -22863, -9384,  -12704, -17101,
     22888,  -1328, 27043,  -30853, -22633, 7232,   -14790, 8533,   9370,   7752,   -31239,
     -19337, 3071,  -19607, 4886,   -9456,  -14056, 27609,  12235,  -31911, 27806},
    {-32554, 3007,  -16040, -26156, 21074, -28633, -3452, 9807,   14548, 26920,  -8623,
     -29090, 31491, 14012,  -31568, 16812, 20640,  6621,  -14516, -5658, -20876, 29586,
     28550,  -3293, -29498, -5530,  -7081, -3644,  23668, -24271, 23964, 10621},
    {0, 6, 0, 0, 1, 1, 5, -2, 0, 0, 1, 0, 0, 1, 0, -1, 0, -2, 0, -1, 0, -1, 0, 0, 0, 0, 1, 3, 1, 0, -1, 2}};

typedef struct {
    int32_t a[16];
    int32_t b[16];
    int32_t expect[16];
} test_mm512_div_epi32_data_model;
static test_mm512_div_epi32_data_model g_test_mm512_div_epi32_data = {
    {
        -86526927,
        -1363665926,
        1901063859,
        -696994376,
        1151417131,
        -1397391427,
        -522987637,
        -859938203,
        -1198042314,
        1176091325,
        -678966908,
        -1847149302,
        -1326453694,
        -1650350271,
        1339153969,
        1389347723,
    },
    {465704244, 1712656224, 1849036094, 867915268, -1757225367, -347662472, -1552853338, -1121834203, -23513990,
     -1632940468, 378479997, -415921536, -1390144286, 2115890216, -732968474, 678529282},
    {0, 0, 1, 0, 0, 4, 0, 0, 50, 0, -1, 4, 0, 0, -1, 2}};

typedef struct {
    int64_t a[8];
    int64_t b[8];
    int64_t expect[8];
} test_mm512_div_epi64_data_model;
static test_mm512_div_epi64_data_model g_test_mm512_div_epi64_data = {
    {-2, 30, 127, 100, 90, 33, 7, 12}, {1, 12, -5, 25, 10, 11, -2, 6}, {-2, 2, -25, 4, 9, 3, -3, 2}};

typedef struct {
    uint8_t a[64];
    uint8_t b[64];
    uint8_t expect[64];
} test_mm512_div_epu8_data_model;
static test_mm512_div_epu8_data_model g_test_mm512_div_epu8_data = {
    {55,  74,  185, 187, 43,  229, 136, 86,  31, 175, 148, 70,  120, 66,  122, 52,  205, 54,  88,  205, 200, 7,
     212, 103, 125, 176, 70,  154, 41,  23,  16, 252, 136, 94,  145, 66,  59,  204, 41,  138, 220, 233, 33,  148,
     205, 221, 159, 26,  214, 88,  217, 160, 28, 122, 50,  103, 11,  125, 245, 84,  61,  43,  234, 254},
    {95,  201, 161, 7,   134, 20, 214, 181, 246, 206, 117, 16,  240, 222, 197, 42,  65,  159, 63,  111, 182, 229,
     154, 149, 179, 108, 80,  17, 167, 5,   141, 178, 138, 62,  212, 16,  179, 103, 176, 232, 169, 23,  80,  176,
     189, 164, 237, 216, 140, 53, 65,  160, 197, 72,  121, 105, 194, 244, 118, 241, 219, 47,  48,  216},
    {0, 0, 1, 26, 0, 11, 0, 0, 0, 0,  1, 4, 0, 0, 0, 1, 3, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 9, 0, 4, 0, 1,
     0, 1, 0, 4,  0, 1,  0, 0, 1, 10, 0, 0, 1, 1, 0, 0, 1, 1, 3, 1, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 4, 1}};

typedef struct {
    uint16_t a[32];
    uint16_t b[32];
    uint16_t expect[32];
} test_mm512_div_epu16_data_model;
static test_mm512_div_epu16_data_model g_test_mm512_div_epu16_data = {
    {6093,  42861, 16601, 30643, 658,   60923, 18131, 31926, 25828, 6984,  42686, 2740, 32879, 49179, 17320, 7494,
     27197, 2932,  11855, 48682, 55996, 601,   39589, 28778, 14142, 59953, 38450, 6003, 39710, 55349, 25634, 58112},
    {34515, 52323, 9067,  33044, 63197, 2487,  42557, 35014, 47494, 48556, 1715, 27920, 39813, 63644, 5287, 61489,
     50722, 33691, 29654, 40504, 20180, 64930, 36671, 20106, 13733, 42870, 2218, 60682, 964,   3909,  986,  42920},
    {0, 0, 1, 0, 0, 24, 0, 0, 0, 0, 24, 0, 0, 0, 3, 0, 0, 0, 0, 1, 2, 0, 1, 1, 1, 1, 17, 0, 41, 14, 25, 1}};

typedef struct {
    uint32_t a[16];
    uint32_t b[16];
    uint32_t expect[16];
} test_mm512_div_epu32_data_model;
static test_mm512_div_epu32_data_model g_test_mm512_div_epu32_data = {
    {133695101, 2255378798, 1666553170, 2288411503, 3229563082, 84913098, 1798373403, 90246357, 2256724188, 253413769,
     1961992073, 3517283845, 3832301571, 682532875, 2758293005, 3097792386},
    {3402735806, 1326242498, 3914365261, 4170459018, 3667759151, 1272899006, 1635724039, 159383538, 3790403195,
     2352788476, 2513199794, 2514630521, 892080090, 2927324231, 3167767204, 1540924681},
    {0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 4, 0, 0, 2}};

typedef struct {
    uint64_t a[8];
    uint64_t b[8];
    uint64_t expect[8];
} test_mm512_div_epu64_data_model;
static test_mm512_div_epu64_data_model g_test_mm512_div_epu64_data = {
    {2, 30, 127, 100, 99, 34, 12, 10}, {1, 12, 5, 25, 9, 11, 2, 5}, {2, 2, 25, 4, 11, 3, 6, 2}};

typedef struct {
    float32_t a[16];
    float32_t b[16];
    float32_t expect[16];
} test_mm512_div_ps_data_model;
static test_mm512_div_ps_data_model g_test_mm512_div_ps_data = {
    {2.4, 3.8, -5.0, 100, -20.4, 74.6, -50.8, 10.0, 40.658, 14.65, 49, 120, 1.5, 0.0024, 0.3, -4.2},
    {1.2, -2.0, 1.0, -102, 10.1, 12.4, -32.0, 9.8, 3, 0.2, -0.5, 7.4, 30, 0.005, -4, 2.1},
    {2.0, -1.9, -5.0, -0.98039, -2.01980, 6.01613, 1.58750, 1.02041, 13.55267, 73.25, -98, 16.21622, 0.05, 0.48, -0.075,
     -2}};

typedef struct {
    float64_t a[8];
    float64_t b[8];
    float64_t expect[8];
} test_mm512_div_pd_data_model;
static test_mm512_div_pd_data_model g_test_mm512_div_pd_data = {
    {2.4, -3.8, 5.0, -10.0, -20.4, 74.6, -50.8, 10.0},
    {1.2, 2.2, -1.0, -9.8, 10.1, 12.4, -32.0, 9.8},
    {2.00, -1.727272727, -5.00, 1.0204081632, -2.01980198, 6.01612903, 1.587500, 1.02040816}};

typedef struct {
    float32_t a[16];
    float32_t b[16];
    int rounding;
    float32_t expect[16];
} test_mm512_div_round_ps_data_model;
static test_mm512_div_round_ps_data_model g_test_mm512_div_round_ps_data = {
    {2.4, 3.8, -5.0, 100, -20.4, 74.6, -50.8, 10.0, 40.658, 14.65, 49, 120, 1.5, 0.0024, 0.3, -4.2},
    {1.2, -2.0, 1.0, -102, 10.1, 12.4, -32.0, 9.8, 3, 0.2, -0.5, 7.4, 30, 0.005, -4, 2.1},
    _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC,
    {2.0, -1.9, -5.0, -0.98039, -2.01980, 6.01613, 1.58750, 1.02041, 13.55267, 73.25, -98, 16.21622, 0.05, 0.48, -0.075,
     -2}};

typedef struct {
    float64_t a[8];
    float64_t b[8];
    int rounding;
    float64_t expect[8];
} test_mm512_div_round_pd_data_model;
static test_mm512_div_round_pd_data_model g_test_mm512_div_round_pd_data = {
    {2.4, -3.8, 5.0, -10.0, -20.4, 74.6, -50.8, 10.0},
    {1.2, 2.2, -1.0, -9.8, 10.1, 12.4, -32.0, 9.8},
    _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC,
    {2.00, -1.727272727, -5.00, 1.0204081632, -2.01980198, 6.01612903, 1.587500, 1.02040816}};


typedef struct {
    int8_t a[32];
    int8_t b[32];
    int8_t expect[32];
} test_mm256_add_epi8_data_model;
static test_mm256_add_epi8_data_model g_test_mm256_add_epi8_data = {
    {107, -45, 58, -11, 46, 84,  2,  91, 38,   -92, 6,  -5,  -33, 14, -96,  -19,
     90,  5,   52, 45,  70, -44, 45, 24, -109, 30,  44, 108, -17, 22, -122, 27},
    {-49, -7, 115, -103, 76, 114, -84, -49, 99, -54, 112,  -46,  -43, 10, 11,   -116,
     65,  20, 122, -30,  1,  -55, -80, -45, 60, 25,  -103, -116, -6,  15, -125, 96},
    {58,   -52, -83, -114, 122, -58, -82, 42,  -119, 110, 118, -51, -76, 24, -85, 121,
     -101, 25,  -82, 15,   71,  -99, -35, -21, -49,  55,  -59, -8,  -23, 37, 9,   123}};

typedef struct {
    int16_t a[16];
    int16_t b[16];
    int16_t expect[16];
} test_mm256_add_epi16_data_model;
static test_mm256_add_epi16_data_model g_test_mm256_add_epi16_data = {
    {-5864, -18716, 7272, 20419, -28335, -3286, -19673, -26955, 13073, 21177, -18843, 22508, 11120, -17786, 18071,
     13963},
    {12271, 2499, 30699, -5904, 22925, 28211, -5074, 14008, 1172, 9077, 7403, 32476, 29133, 8618, 20764, -20560},
    {6407, -16217, -27565, 14515, -5410, 24925, -24747, -12947, 14245, 30254, -11440, -10552, -25283, -9168, -26701,
     -6597}};

typedef struct {
    int32_t a[8];
    int32_t b[8];
    int32_t expect[8];
} test_mm256_add_epi32_data_model;
static test_mm256_add_epi32_data_model g_test_mm256_add_epi32_data = {
    {1, 16516, -21313, -545454, -2147483648, 313213, -1695550175, -486101411},
    {1, 321321, -113132, 1321564, 2147483647, -13213211, 25646321, -1277938685},
    {2, 337837, -134445, 776110, -1, -12899998, -1669903854, -1764040096}};

typedef struct {
    int64_t a[4];
    int64_t b[4];
    int64_t expect[4];
} test_mm256_add_epi64_data_model;
static test_mm256_add_epi64_data_model g_test_mm256_add_epi64_data = {
    {1, 43532132, 9223372036854775806, -9223372036854775807},
    {1, 13213143, 1, 9223372036854775807},
    {2, 56745275, 9223372036854775807, 0}};

typedef struct {
    int8_t a[64];
    int8_t b[64];
    int8_t expect[64];
} test_mm512_add_epi8_data_model;
static test_mm512_add_epi8_data_model g_test_mm512_add_epi8_data = {
    {107, -45, 58,   -11, 46, 84,  2,   91, 38,   -92, 6,   -5,  -33,  14,  -96, -19, 90,  5,  52,   45,  70, -44,
     45,  24,  -109, 30,  44, 108, -17, 22, -122, 27,  107, -45, 58,   -11, 46,  84,  2,   91, 38,   -92, 6,  -5,
     -33, 14,  -96,  -19, 90, 5,   52,  45, 70,   -44, 45,  24,  -109, 30,  44,  108, -17, 22, -122, 27},
    {-49, -7, 115, -103, 76, 114, -84, -49, 99, -54, 112,  -46,  -43, 10, 11,   -116,
     65,  20, 122, -30,  1,  -55, -80, -45, 60, 25,  -103, -116, -6,  15, -125, 96,
     -49, -7, 115, -103, 76, 114, -84, -49, 99, -54, 112,  -46,  -43, 10, 11,   -116,
     65,  20, 122, -30,  1,  -55, -80, -45, 60, 25,  -103, -116, -6,  15, -125, 96},
    {58,  -52, -83, -114, 122,  -58, -82, 42, -119, 110, 118, -51, -76, 24,   -85, 121, -101, 25, -82,  15,  71,  -99,
     -35, -21, -49, 55,   -59,  -8,  -23, 37, 9,    123, 58,  -52, -83, -114, 122, -58, -82,  42, -119, 110, 118, -51,
     -76, 24,  -85, 121,  -101, 25,  -82, 15, 71,   -99, -35, -21, -49, 55,   -59, -8,  -23,  37, 9,    123}};

typedef struct {
    int16_t a[32];
    int16_t b[32];
    int16_t expect[32];
} test_mm512_add_epi16_data_model;
static test_mm512_add_epi16_data_model g_test_mm512_add_epi16_data = {
    {-5864,  -18716, 7272,   20419, -28335, -3286, -19673, -26955, 13073, 21177,  -18843,
     22508,  11120,  -17786, 18071, 13963,  -5864, -18716, 7272,   20419, -28335, -3286,
     -19673, -26955, 13073,  21177, -18843, 22508, 11120,  -17786, 18071, 13963},
    {12271, 2499, 30699, -5904, 22925, 28211, -5074, 14008, 1172, 9077, 7403, 32476, 29133, 8618, 20764, -20560,
     12271, 2499, 30699, -5904, 22925, 28211, -5074, 14008, 1172, 9077, 7403, 32476, 29133, 8618, 20764, -20560},
    {6407,   -16217, -27565, 14515,  -5410,  24925,  -24747, -12947, 14245,  30254, -11440,
     -10552, -25283, -9168,  -26701, -6597,  6407,   -16217, -27565, 14515,  -5410, 24925,
     -24747, -12947, 14245,  30254,  -11440, -10552, -25283, -9168,  -26701, -6597}};

typedef struct {
    int32_t a[16];
    int32_t b[16];
    int32_t expect[16];
} test_mm512_add_epi32_data_model;
static test_mm512_add_epi32_data_model g_test_mm512_add_epi32_data = {
    {1, 16516, -21313, -545454, -2147483648, 313213, -1695550175, -486101411, 1, 16516, -21313, -545454, -2147483648,
     313213, -1695550175, -486101411},
    {1, 321321, -113132, 1321564, 2147483647, -13213211, 25646321, -1277938685, 1, 321321, -113132, 1321564, 2147483647,
     -13213211, 25646321, -1277938685},
    {2, 337837, -134445, 776110, -1, -12899998, -1669903854, -1764040096, 2, 337837, -134445, 776110, -1, -12899998,
     -1669903854, -1764040096}};

typedef struct {
    int64_t a[8];
    int64_t b[8];
    int64_t expect[8];
} test_mm512_add_epi64_data_model;
static test_mm512_add_epi64_data_model g_test_mm512_add_epi64_data = {
    {1, 43532132, 9223372036854775806, -9223372036854775807, 1, 43532132, 9223372036854775805, -9223372036854775807},
    {1, 13213143, 1, 9223372036854775807, 1, 13213143, 2, 9223372036854775806},
    {2, 56745275, 9223372036854775807, 0, 2, 56745275, 9223372036854775807, -1}};

typedef struct {
    uint8_t a[16];
    uint8_t b[16];
    uint8_t expect[16];
} test_mm_adds_epu8_data_model;
static test_mm_adds_epu8_data_model g_test_mm_adds_epu8_data = {
    {246, 10,  160, 160, 47,  243, 45,  128, 76,  158, 44, 44, 26, 145, 210, 76},
    {203, 225, 28, 239, 30, 109, 154, 172, 13,  57,  63,  61, 195, 246, 0,   201},
    {255, 235, 188, 255, 77,  255, 199, 255, 89,  215, 107, 105, 221, 255, 210, 255}};

typedef struct {
    int8_t a[32];
    int8_t b[32];
    int8_t expect[32];
} test_mm256_adds_epi8_data_model;
static test_mm256_adds_epi8_data_model g_test_mm256_adds_epi8_data = {
    {107, -45, 58, -11, 46, 84,  2,  91, 38,   -92, 6,  -5,  -33, 14, -96,  -19,
     90,  5,   52, 45,  70, -44, 45, 24, -109, 30,  44, 108, -17, 22, -122, 27},
    {39, -99, 115, -103, 76, 114, -84, -49, 99, -54, 112,  -46,  -43, 10, 11,   -116,
     65, 20,  122, -30,  1,  -55, -80, -45, 60, 25,  -103, -116, -6,  15, -125, 96},
    {127, -128, 127, -114, 122, 127, -82, 42,  127, -128, 118, -51, -76, 24, -85,  -128,
     127, 25,   127, 15,   71,  -99, -35, -21, -49, 55,   -59, -8,  -23, 37, -128, 123}};

typedef struct {
    int16_t a[16];
    int16_t b[16];
    int16_t expect[16];
} test_mm256_adds_epi16_data_model;
static test_mm256_adds_epi16_data_model g_test_mm256_adds_epi16_data = {
    {-5864, -18716, 30111, -31000, -28335, 28333, -19673, -26955, 13073, 21177, -18843, 22508, 11120, -17786, 18071,
     13963},
    {12271, 2499, 30699, -5904, 22925, 28211, -19333, 14008, 1172, 9077, 7403, 32476, 29133, 8618, 20764, -20560},
    {6407, -16217, 32767, -32768, -5410, 32767, -32768, -12947, 14245, 30254, -11440, 32767, 32767, -9168, 32767,
     -6597}};

typedef struct {
    uint8_t a[32];
    uint8_t b[32];
    uint8_t expect[32];
} test_mm256_adds_epu8_data_model;
static test_mm256_adds_epu8_data_model g_test_mm256_adds_epu8_data = {
    {246, 10,  160, 160, 47,  243, 45,  128, 76,  158, 44, 44, 26, 145, 210, 76,
     204, 170, 115, 91,  104, 15,  232, 66,  157, 109, 32, 7,  93, 48,  152, 248},
    {203, 225, 28, 239, 30, 109, 154, 172, 13,  57,  63,  61, 195, 246, 0,   201,
     86,  108, 74, 162, 78, 150, 143, 52,  225, 201, 154, 58, 152, 47,  124, 100},
    {255, 235, 188, 255, 77,  255, 199, 255, 89,  215, 107, 105, 221, 255, 210, 255,
     255, 255, 189, 253, 182, 165, 255, 118, 255, 255, 186, 65,  245, 95,  255, 255}};

typedef struct {
    uint16_t a[16];
    uint16_t b[16];
    uint16_t expect[16];
} test_mm256_adds_epu16_data_model;
static test_mm256_adds_epu16_data_model g_test_mm256_adds_epu16_data = {
    {2505, 5546, 31194, 28975, 21936, 58967, 32346, 29341, 57603, 29201, 11167, 1633, 24196, 42551, 30133, 61941},
    {19524, 29921, 17306, 22881, 26864, 47618, 26529, 27503, 45461, 14653, 46631, 34091, 23328, 42737, 36807, 32638},
    {22029, 35467, 48500, 51856, 48800, 65535, 58875, 56844, 65535, 43854, 57798, 35724, 47524, 65535, 65535, 65535}};

typedef struct {
    int8_t a[64];
    int8_t b[64];
    int8_t expect[64];
} test_mm512_adds_epi8_data_model;
static test_mm512_adds_epi8_data_model g_test_mm512_adds_epi8_data = {
    {107, -45, 58,   -11, 46, 84,  2,   91, 38,   -92, 6,   -5,  -33,  14,  -96, -19, 90,  5,  52,   45,  70, -44,
     45,  24,  -109, 30,  44, 108, -17, 22, -122, 27,  107, -45, 58,   -11, 46,  84,  2,   91, 38,   -92, 6,  -5,
     -33, 14,  -96,  -19, 90, 5,   52,  45, 70,   -44, 45,  24,  -109, 30,  44,  108, -17, 22, -122, 27},
    {39, -99, 115, -103, 76, 114, -84, -49, 99, -54, 112,  -46,  -43, 10, 11,   -116,
     65, 20,  122, -30,  1,  -55, -80, -45, 60, 25,  -103, -116, -6,  15, -125, 96,
     39, -99, 115, -103, 76, 114, -84, -49, 99, -54, 112,  -46,  -43, 10, 11,   -116,
     65, 20,  122, -30,  1,  -55, -80, -45, 60, 25,  -103, -116, -6,  15, -125, 96},
    {127, -128, 127, -114, 122, 127, -82, 42,  127, -128, 118, -51, -76, 24, -85,  -128,
     127, 25,   127, 15,   71,  -99, -35, -21, -49, 55,   -59, -8,  -23, 37, -128, 123,
     127, -128, 127, -114, 122, 127, -82, 42,  127, -128, 118, -51, -76, 24, -85,  -128,
     127, 25,   127, 15,   71,  -99, -35, -21, -49, 55,   -59, -8,  -23, 37, -128, 123}};

typedef struct {
    int16_t a[32];
    int16_t b[32];
    int16_t expect[32];
} test_mm512_adds_epi16_data_model;
static test_mm512_adds_epi16_data_model g_test_mm512_adds_epi16_data = {
    {-5864,  -18716, 30111,  -31000, -28335, 28333, -19673, -26955, 13073,  21177,  -18843,
     22508,  11120,  -17786, 18071,  13963,  -5864, -18716, 30111,  -31000, -28335, 28333,
     -19673, -26955, 13073,  21177,  -18843, 22508, 11120,  -17786, 18071,  13963},
    {12271, 2499, 30699, -5904, 22925, 28211, -19333, 14008, 1172, 9077, 7403, 32476, 29133, 8618, 20764, -20560,
     12271, 2499, 30699, -5904, 22925, 28211, -19333, 14008, 1172, 9077, 7403, 32476, 29133, 8618, 20764, -20560},
    {6407,   -16217, 32767, -32768, -5410,  32767, -32768, -12947, 14245,  30254, -11440,
     32767,  32767,  -9168, 32767,  -6597,  6407,  -16217, 32767,  -32768, -5410, 32767,
     -32768, -12947, 14245, 30254,  -11440, 32767, 32767,  -9168,  32767,  -6597}};

typedef struct {
    uint8_t a[64];
    uint8_t b[64];
    uint8_t expect[64];
} test_mm512_adds_epu8_data_model;
static test_mm512_adds_epu8_data_model g_test_mm512_adds_epu8_data = {
    {246, 10, 160, 160, 47,  243, 45,  128, 76,  158, 44,  44,  26,  145, 210, 76,  204, 170, 115, 91,  104, 15,
     232, 66, 157, 109, 32,  7,   93,  48,  152, 248, 211, 209, 236, 232, 123, 235, 134, 152, 14,  237, 159, 105,
     140, 44, 22,  137, 199, 47,  134, 8,   14,  101, 33,  184, 2,   94,  153, 158, 98,  74,  239, 98},
    {203, 225, 28,  239, 30,  109, 154, 172, 13,  57,  63,  61, 195, 246, 0,   201, 86,  108, 74,  162, 78,  150,
     143, 52,  225, 201, 154, 58,  152, 47,  124, 100, 162, 70, 44,  85,  247, 99,  45,  35,  5,   47,  244, 252,
     154, 36,  36,  233, 90,  179, 23,  1,   243, 149, 253, 47, 165, 162, 200, 37,  202, 120, 211, 182},
    {255, 235, 188, 255, 77,  255, 199, 255, 89,  215, 107, 105, 221, 255, 210, 255, 255, 255, 189, 253, 182, 165,
     255, 118, 255, 255, 186, 65,  245, 95,  255, 255, 255, 255, 255, 255, 255, 255, 179, 187, 19,  255, 255, 255,
     255, 80,  58,  255, 255, 226, 157, 9,   255, 250, 255, 231, 167, 255, 255, 195, 255, 194, 255, 255}};

typedef struct {
    uint16_t a[32];
    uint16_t b[32];
    uint16_t expect[32];
} test_mm512_adds_epu16_data_model;
static test_mm512_adds_epu16_data_model g_test_mm512_adds_epu16_data = {
    {2505,  5546,  31194, 28975, 21936, 58967, 32346, 29341, 57603, 29201, 11167, 1633,  24196, 42551, 30133, 61941,
     56332, 62560, 19258, 44871, 52863, 23277, 64832, 47177, 32544, 6016,  57474, 12266, 30978, 58871, 26089, 28214},
    {19524, 29921, 17306, 22881, 26864, 47618, 26529, 27503, 45461, 14653, 46631, 34091, 23328, 42737, 36807, 32638,
     1951,  21990, 25999, 41194, 38302, 19674, 52618, 56899, 10842, 43711, 7650,  16134, 54818, 61112, 55276, 16885},
    {22029, 35467, 48500, 51856, 48800, 65535, 58875, 56844, 65535, 43854, 57798, 35724, 47524, 65535, 65535, 65535,
     58283, 65535, 45257, 65535, 65535, 42951, 65535, 65535, 43386, 49727, 65124, 28400, 65535, 65535, 65535, 45099}};

typedef struct {
    float32_t a[8];
    float32_t b[8];
    float32_t expect[8];
} test_mm256_add_ps_data_model;
static test_mm256_add_ps_data_model g_test_mm256_add_ps_data = {
    {55720.105469, 64281.750000, 89742.835938, 73413.921875, 62127.492188, 89540.796875, 91808.859375, 18845.945312},
    {51026.980469, 74192.773438, 31054.048828, 40471.296875, 10455.238281, 76734.781250, 35246.054688, 66186.554688},
    {106747.085938, 138474.531250, 120796.882812, 113885.218750, 72582.734375, 166275.578125, 127054.914062,
     85032.500000}};

typedef struct {
    float64_t a[4];
    float64_t b[4];
    float64_t expect[4];
} test_mm256_add_pd_data_model;
static test_mm256_add_pd_data_model g_test_mm256_add_pd_data = {
    {895828870.5853160620, 13198299.6345069464, -46353094.4883757681, 1008132723.0642696619},
    {72817530.7555908561, -86737498.6360623688, 463481696.5422678590, 1548820508.3372950554},
    {968646401.3409068584, -73539199.0015554279, 417128602.0538920760, 2556953231.4015645981}};

typedef struct {
    float32_t a[16];
    float32_t b[16];
    float32_t expect[16];
} test_mm512_add_ps_data_model;
static test_mm512_add_ps_data_model g_test_mm512_add_ps_data = {
    {55720.105469, 64281.750000, 89742.835938, 73413.921875, 62127.492188, 89540.796875, 91808.859375, 18845.945312,
     35417.636719, 12672.005859, 48391.230469, 99421.414062, 26799.482422, 18733.376953, 87186.093750, 14267.460938},
    {51026.980469, 74192.773438, 31054.048828, 40471.296875, 10455.238281, 76734.781250, 35246.054688, 66186.554688,
     8255.891602, 5566.725098, 77149.703125, 96017.484375, 64436.101562, 87067.187500, 93427.578125, 42545.218750},
    {106747.085938, 138474.531250, 120796.882812, 113885.218750, 72582.734375, 166275.578125, 127054.914062,
     85032.500000, 43673.527344, 18238.730469, 125540.937500, 195438.906250, 91235.585938, 105800.562500, 180613.671875,
     56812.679688}};

typedef struct {
    float64_t a[8];
    float64_t b[8];
    float64_t expect[8];
} test_mm512_add_pd_data_model;
static test_mm512_add_pd_data_model g_test_mm512_add_pd_data = {
    {895828870.5853160620, 13198299.6345069464, -46353094.4883757681, 1008132723.0642696619, 1132533339.7273423672,
     190439947.2382000089, -1511701151.4810729027, 446683041.9176963568},
    {72817530.7555908561, -86737498.6360623688, 463481696.5422678590, 1548820508.3372950554, -139317257.6059397161,
     2251411999.9036965370, 1218114754.9971106052, 27277800.0651864633},
    {968646401.3409068584, -73539199.0015554279, 417128602.0538920760, 2556953231.4015645981, 993216082.1214026213,
     2441851947.1418967247, -293586396.4839622974, 473960841.9828827977}};

typedef struct {
    float32_t a[16];
    float32_t b[16];
    int rounding;
    float32_t expect[16];
} test_mm512_add_round_ps_data_model;
static test_mm512_add_round_ps_data_model g_test_mm512_add_round_ps_data = {
    {55720.105469, 64281.750000, 89742.835938, 73413.921875, 62127.492188, 89540.796875, 91808.859375, 18845.945312,
     35417.636719, 12672.005859, 48391.230469, 99421.414062, 26799.482422, 18733.376953, 87186.093750, 14267.460938},
    {51026.980469, 74192.773438, 31054.048828, 40471.296875, 10455.238281, 76734.781250, 35246.054688, 66186.554688,
     8255.891602, 5566.725098, 77149.703125, 96017.484375, 64436.101562, 87067.187500, 93427.578125, 42545.218750},
    10,
    {106747.085938, 138474.531250, 120796.882812, 113885.218750, 72582.734375, 166275.578125, 127054.914062,
     85032.500000, 43673.527344, 18238.730469, 125540.937500, 195438.906250, 91235.585938, 105800.562500, 180613.671875,
     56812.679688}};

typedef struct {
    float64_t a[8];
    float64_t b[8];
    int rounding;
    float64_t expect[8];
} test_mm512_add_round_pd_data_model;
static test_mm512_add_round_pd_data_model g_test_mm512_add_round_pd_data = {
    {895828870.5853160620, 13198299.6345069464, -46353094.4883757681, 1008132723.0642696619, 1132533339.7273423672,
     190439947.2382000089, -1511701151.4810729027, 446683041.9176963568},
    {72817530.7555908561, -86737498.6360623688, 463481696.5422678590, 1548820508.3372950554, -139317257.6059397161,
     2251411999.9036965370, 1218114754.9971106052, 27277800.0651864633},
    10,
    {968646401.3409068584, -73539199.0015554279, 417128602.0538920760, 2556953231.4015645981, 993216082.1214026213,
     2441851947.1418967247, -293586396.4839622974, 473960841.9828827977}};

typedef struct {
    float32_t a[16];
    float32_t b[16];
    float32_t expect[16];
} test_mm512_addn_ps_data_model;
static test_mm512_addn_ps_data_model g_test_mm512_addn_ps_data = {
    {55720.105469, 64281.750000, 89742.835938, 73413.921875, 62127.492188, 89540.796875, 91808.859375, 18845.945312,
     35417.636719, 12672.005859, 48391.230469, 99421.414062, 26799.482422, 18733.376953, 87186.093750, 14267.460938},
    {51026.980469, 74192.773438, 31054.048828, 40471.296875, 10455.238281, 76734.781250, 35246.054688, 66186.554688,
     8255.891602, 5566.725098, 77149.703125, 96017.484375, 64436.101562, 87067.187500, 93427.578125, 42545.218750},
    {-106747.085938, -138474.531250, -120796.882812, -113885.218750, -72582.734375, -166275.578125, -127054.914062,
     -85032.500000, -43673.527344, -18238.730469, -125540.937500, -195438.906250, -91235.585938, -105800.562500,
     -180613.671875, -56812.679688}};

typedef struct {
    float64_t a[8];
    float64_t b[8];
    float64_t expect[8];
} test_mm512_addn_pd_data_model;
static test_mm512_addn_pd_data_model g_test_mm512_addn_pd_data = {
    {895828870.5853160620, 13198299.6345069464, -46353094.4883757681, 1008132723.0642696619, 1132533339.7273423672,
     190439947.2382000089, -1511701151.4810729027, 446683041.9176963568},
    {72817530.7555908561, -86737498.6360623688, 463481696.5422678590, 1548820508.3372950554, -139317257.6059397161,
     2251411999.9036965370, 1218114754.9971106052, 27277800.0651864633},
    {-968646401.3409068584, 73539199.0015554279, -417128602.0538920760, -2556953231.4015645981, -993216082.1214026213,
     -2441851947.1418967247, 293586396.4839622974, -473960841.9828827977}};

typedef struct {
    float32_t a[16];
    float32_t b[16];
    int rounding;
    float32_t expect[16];
} test_mm512_addn_round_ps_data_model;
static test_mm512_addn_round_ps_data_model g_test_mm512_addn_round_ps_data = {
    {55720.105469, 64281.750000, 89742.835938, 73413.921875, 62127.492188, 89540.796875, 91808.859375, 18845.945312,
     35417.636719, 12672.005859, 48391.230469, 99421.414062, 26799.482422, 18733.376953, 87186.093750, 14267.460938},
    {51026.980469, 74192.773438, 31054.048828, 40471.296875, 10455.238281, 76734.781250, 35246.054688, 66186.554688,
     8255.891602, 5566.725098, 77149.703125, 96017.484375, 64436.101562, 87067.187500, 93427.578125, 42545.218750},
    10,
    {-106747.085938, -138474.531250, -120796.882812, -113885.218750, -72582.734375, -166275.578125, -127054.914062,
     -85032.500000, -43673.527344, -18238.730469, -125540.937500, -195438.906250, -91235.585938, -105800.562500,
     -180613.671875, -56812.679688}};

typedef struct {
    float64_t a[8];
    float64_t b[8];
    int rounding;
    float64_t expect[8];
} test_mm512_addn_round_pd_data_model;
static test_mm512_addn_round_pd_data_model g_test_mm512_addn_round_pd_data = {
    {895828870.5853160620, 13198299.6345069464, -46353094.4883757681, 1008132723.0642696619, 1132533339.7273423672,
     190439947.2382000089, -1511701151.4810729027, 446683041.9176963568},
    {72817530.7555908561, -86737498.6360623688, 463481696.5422678590, 1548820508.3372950554, -139317257.6059397161,
     2251411999.9036965370, 1218114754.9971106052, 27277800.0651864633},
    10,
    {-968646401.3409068584, 73539199.0015554279, -417128602.0538920760, -2556953231.4015645981, -993216082.1214026213,
     -2441851947.1418967247, 293586396.4839622974, -473960841.9828827977}};

typedef struct {
    int32_t a[16];
    int32_t b[16];
    int32_t expect[16];
    __mmask16 sign;
} test_mm512_addsetc_epi32_data_model;
static test_mm512_addsetc_epi32_data_model g_test_mm512_addsetc_epi32_data = {
    {1, -1, -1, -545454, -2147483648, 313213, -1695550175, -486101411, 1, 16516, -21313, -545454, -2147483648,
     313213, -1695550175, -486101411},
    {-1, -1, 0, 1321564, 2147483647, -13213211, 25646321, -1277938685, 1, 321321, -113132, 1321564, 2147483647,
     -13213211, 25646321, -1277938685},
    {0, -2, -1, 776110, -1, -12899998, -1669903854, -1764040096, 2, 337837, -134445, 776110, -1, -12899998,
     -1669903854, -1764040096},
    0x8c8b};

typedef struct {
    int32_t a[16];
    int32_t b[16];
    int32_t expect[16];
    __mmask16 sign;
} test_mm512_addsets_epi32_data_model;
static test_mm512_addsets_epi32_data_model g_test_mm512_addsets_epi32_data = {
    {1, -1, -1, -545454, -2147483648, 313213, -1695550175, -486101411, 1, 16516, -21313, -545454, -2147483648,
     313213, -1695550175, -486101411},
    {-1, -1, 0, 1321564, 2147483647, -13213211, 25646321, -1277938685, 1, 321321, -113132, 1321564, 2147483647,
     -13213211, 25646321, -1277938685},
    {0, -2, -1, 776110, -1, -12899998, -1669903854, -1764040096, 2, 337837, -134445, 776110, -1, -12899998,
     -1669903854, -1764040096},
    0x8482};

typedef struct {
    float32_t a[16];
    float32_t b[16];
    float32_t expect[16];
    __mmask16 sign;
} test_mm512_addsets_ps_data_model;
static test_mm512_addsets_ps_data_model g_test_mm512_addsets_ps_data = {
    {0.666720, 0.168380, 0.935157, -0.852902, -0.513789, 0.557619, 0.700522, -0.650639, 0.280436, 0.672595, -0.310473,
     0.256968, -0.051129, -0.756766, -0.055633, 0.078373},
    {0.936496, 0.182931, 0.308435, 0.974094, 0.673502, -0.955101, 0.452082, 0.973139, 0.060114, -0.068916, -0.334961,
     -0.554013, -0.424114, 0.131145, -0.363884, -0.932945},
    {1.603216, 0.351312, 1.243592, 0.121192, 0.159712, -0.397482, 1.152604, 0.322500, 0.340550, 0.603679, -0.645434,
     -0.297046, -0.475242, -0.625621, -0.419517, -0.854572},
    0x5400};

typedef struct {
    float32_t a[16];
    float32_t b[16];
    int rounding;
    float32_t expect[16];
    __mmask16 sign;
} test_mm512_addsets_round_ps_data_model;
static test_mm512_addsets_round_ps_data_model g_test_mm512_addsets_round_ps_data = {
    {0.666720, 0.168380, 0.935157, -0.852902, -0.513789, 0.557619, 0.700522, -0.650639, 0.280436, 0.672595, -0.310473,
     0.256968, -0.051129, -0.756766, -0.055633, 0.078373},
    {0.936496, 0.182931, 0.308435, 0.974094, 0.673502, -0.955101, 0.452082, 0.973139, 0.060114, -0.068916, -0.334961,
     -0.554013, -0.424114, 0.131145, -0.363884, -0.932945},
    10,
    {1.603216, 0.351312, 1.243592, 0.121192, 0.159712, -0.397482, 1.152604, 0.322500, 0.340550, 0.603679, -0.645434,
     -0.297046, -0.475242, -0.625621, -0.419517, -0.854572},
    0x5400};

typedef struct {
    float32_t a[8];
    float32_t b[8];
    float32_t expect[8];
} test_mm256_addsub_ps_data_model;
static test_mm256_addsub_ps_data_model g_test_mm256_addsub_ps_data = {
    {89742.835938, 73413.921875, 62127.492188, 89540.796875, 91808.859375, 18845.945312, 35417.636719, 12672.005859},
    {51026.980469, 74192.773438, 31054.048828, 66186.554688, 8255.891602, 5566.725098, 77149.703125, 42545.218750},
    {38715.855469, 147606.687500, 31073.443359, 155727.343750, 83552.968750, 24412.669922, -41732.066406,
     55217.226562}};

typedef struct {
    float64_t a[4];
    float64_t b[4];
    float64_t expect[4];
} test_mm256_addsub_pd_data_model;
static test_mm256_addsub_pd_data_model g_test_mm256_addsub_pd_data = {
    {13198299.6345069464, -46353094.4883757681, 1008132723.0642696619, 1132533339.7273423672},
    {463481696.5422678590, 1548820508.3372950554, -139317257.6059397161, 2251411999.9036965370},
    {-450283396.9077609181, 1502467413.8489193916, 1147449980.6702094078, 3383945339.6310386658}};

typedef struct {
    float32_t a[8];
    float32_t b[8];
    float32_t m[8];
    float32_t expect[8];
} test_mm256_blendv_ps_data_model;
static test_mm256_blendv_ps_data_model g_test_mm256_blendv_ps_data = {
    {65.3, 0.000452, -547.22235, 989877.4, 4590, -100.23, 546.34, 12},
    {90.8, 13, 6698.625, 8744.879, 0, 1000, 23.45, -0.00547},
    {1.00, 0, -23.56, 100.2, -0.0, -399.45, -888.658, 10.22},
    {65.300003, 0.000452, 6698.625000, 989877.375000, 0.000000, 1000.000000, 23.450001, 12.000000}};

typedef struct {
    float64_t a[4];
    float64_t b[4];
    float64_t m[4];
    float64_t expect[4];
} test_mm256_blendv_pd_data_model;
static test_mm256_blendv_pd_data_model g_test_mm256_blendv_pd_data = {{65.3, 0.000452, -547.22235, 989877.4},
                                                                      {90.8, 13, 6698.625, 8744.879},
                                                                      {1.00, 0, -23.56, -0.0},
                                                                      {65.300, 0.000452, 6698.6250, 8744.879}};

typedef struct {
    float32_t a[8];
    float32_t b[8];
    int imm;
    float32_t expect[8];
} test_mm256_blend_ps_data_model;
static test_mm256_blend_ps_data_model g_test_mm256_blend_ps_data = {
    {65.3, 0.000452, -547.22235, 989877.4, 4590, -100.23, 546.34, 12},
    {90.8, 13, 6698.625, 8744.879, 0, 1000, 23.45, -0.00547},
    0,
    {65.300003, 0.000452, -547.222351, 989877.375000, 4590.000000, -100.230003, 546.340027, 12.000000}};

typedef struct {
    float64_t a[4];
    float64_t b[4];
    int imm;
    float64_t expect[4];
} test_mm256_blend_pd_data_model;
static test_mm256_blend_pd_data_model g_test_mm256_blend_pd_data = {{65.3, 0.000452, -547.22235, 989877.4},
                                                                    {90.8, 13, 6698.625, 8744.879},
                                                                    1,
                                                                    {90.800000, 0.000452, -547.222350, 989877.400000}};

typedef struct {
    __mmask16 k;
    int32_t a[16];
    int32_t b[16];
    int32_t expect[16];
} test_mm512_mask_blend_epi32_data_model;
static test_mm512_mask_blend_epi32_data_model g_test_mm512_mask_blend_epi32_data = {
    0x1234,
    {1, -1, -1, -545454, -2147483648, 313213, -1695550175, -486101411, 1, 16516, -21313, -545454, -2147483648,
     313213, -1695550175, -486101411},
    {-1, -1, 0, 1321564, 2147483647, -13213211, 25646321, -1277938685, 1, 321321, -113132, 1321564, 2147483647,
     -13213211, 25646321, -1277938685},
    {1, -1, 0, -545454, 2147483647, -13213211, -1695550175, -486101411, 1, 321321, -21313, -545454, 2147483647,
     313213, -1695550175, -486101411}};

typedef struct {
    __mmask16 k;
    float32_t a[16];
    float32_t b[16];
    float32_t expect[16];
} test_mm512_mask_blend_ps_data_model;
static test_mm512_mask_blend_ps_data_model g_test_mm512_mask_blend_ps_data = {
    0,
    {10, -9.78, 6.33, 0.45, 0, -13, 30.5, 1, 65.3, 0.000452, -547.22235, 989877.4, 4590, -100.23, 546.34, 12},
    {100, 20, -7.5, 9.5, 0.2, 3, -65.12, 88.1, 90.8, 13, 6698.625, 8744.879, 0, 1000, 23.45, -0.00547},
    {10.000000, -9.780000, 6.330000, 0.450000, 0.000000, -13.000000, 30.500000, 1.000000, 65.300003, 0.000452,
     -547.222351, 989877.375000, 4590.000000, -100.230003, 546.340027, 12.000000}};

typedef struct {
    __mmask8 k;
    float64_t a[8];
    float64_t b[8];
    float64_t expect[8];
} test_mm512_mask_blend_pd_data_model;
static test_mm512_mask_blend_pd_data_model g_test_mm512_mask_blend_pd_data = {
    32,
    {10, -9.78, 6.33, 0.45, 0, -13, 30.5, 1},
    {100, 20, -7.5, 9.5, 0.2, 3, -65.12, 88.1},
    {10.000000, -9.780000, 6.330000, 0.450000, 0.000000, 3.000000, 30.500000, 1.000000}};

typedef struct {
    int8_t a[16];
    int8_t b[16];
    int8_t expect[16];
} test_mm_sub_epi8_data_model;
static test_mm_sub_epi8_data_model g_test_mm_sub_epi8_data = {
    {-95, 87,  117, -34, 56,  -19, 113, 106, 2,  -103, -21, 64, 49,  39,  119, 44},
    {-120,-83, 124, 119, -29, 78,  -34, 127, -89, 74, -88, -109, 25, -32, 89,  -104},
    {25, -86, -7,  103,  85,  -97, -109, -21, 91, 79, 67,   -83, 24, 71, 30, -108}};

typedef struct {
    int16_t a[16];
    int16_t b[16];
    int16_t expect[16];
} test_mm256_sub_epi16_data_model;
static test_mm256_sub_epi16_data_model g_test_mm256_sub_epi16_data = {
    {29243, 30783, 25393, 13436, -8564, -24992, -29429, 10542, -30544, 20419, 6673, -29899, 13504, -2735, 4096, 31088},
    {30660, -1312, 2510, 7648, 28728, 19162, 2999, -18632, -24918, -14799, 31045, -12049, 9362, -3054, -2280, 571},
    {-1417, 32095, 22883, 5788, 28244, 21382, -32428, 29174, -5626, -30318, -24372, -17850, 4142, 319, 6376, 30517}};

typedef struct {
    int32_t a[8];
    int32_t b[8];
    int32_t expect[8];
} test_mm256_sub_epi32_data_model;
static test_mm256_sub_epi32_data_model g_test_mm256_sub_epi32_data = {
    {2147483647, -2147483648, 4568122, 789, 741852, 32, 0, 852},
    {-2, 2, 48792, 1236589, -7895412, 32, 15, 23},
    {-2147483647, 2147483646, 4519330, -1235800, 8637264, 0, -15, 829}};

typedef struct {
    int64_t a[4];
    int64_t b[4];
    int64_t expect[4];
} test_mm256_sub_epi64_data_model;
static test_mm256_sub_epi64_data_model g_test_mm256_sub_epi64_data = {
    {9223372036854775805, -9223372036854775805, 4568122, 789},
    {-10, 10, 48792, 1236589},
    {-9223372036854775801, 9223372036854775801, 4519330, -1235800}};

typedef struct {
    int8_t a[32];
    int8_t b[32];
    int8_t expect[32];
} test_mm256_sub_epi8_data_model;
static test_mm256_sub_epi8_data_model g_test_mm256_sub_epi8_data = {
    {-95, 87,  117, -34, 56,   -19,  113, 106, 2,    -103, -21, 64, 49,  39,  119,  44,
     98,  -59, -1,  78,  -121, -122, 26,  120, -104, 102,  -71, 22, -64, -53, -105, -49},
    {-120, -83, 124, 119, -29, 78,  -34, 127,  -89,  74, -88, -109, 25,  -32, 89,  -104,
     3,    87,  36,  -73, -68, 121, 112, -100, -111, 3,  39,  107,  -67, -73, 120, 121},
    {25, -86, -7,  103,  85,  -97, -109, -21, 91, 79, 67,   -83, 24, 71, 30, -108,
     95, 110, -37, -105, -53, 13,  -86,  -36, 7,  99, -110, -85, 3,  20, 31, 86}};

typedef struct {
    float64_t a[4];
    float64_t b[4];
    float64_t expect[4];
} test_mm256_sub_pd_data_model;
static test_mm256_sub_pd_data_model g_test_mm256_sub_pd_data = {{1.000000, -0.789450, 67.157000, -145.200000},
                                                                {0.123895, 1254.687500, 120145.000000, 21.520000},
                                                                {0.876105, -1255.476950, -120077.843000, -166.720000}};

typedef struct {
    float32_t a[8];
    float32_t b[8];
    float32_t expect[8];
} test_mm256_sub_ps_data_model;
static test_mm256_sub_ps_data_model g_test_mm256_sub_ps_data = {
    {1.500000, 127.199997, 8.000000, -9.562000, -100.000000, -128.845703, 1045481.000000, 7.125480},
    {4.000000, 20.000000, 2.000000, 3.100000, -10.000000, 5.450000, 47.125469, 34.256100},
    {-2.500000, 107.199997, 6.000000, -12.662001, -90.000000, -134.295700, 1045433.875000, -27.130619}};

typedef struct {
    int16_t a[32];
    int16_t b[32];
    int16_t expect[32];
} test_mm512_sub_epi16_data_model;
static test_mm512_sub_epi16_data_model g_test_mm512_sub_epi16_data = {
    {-18859, 20464, -27471, -26305, -24156, -3887,  15196, 23902,  -20918, 19080, 21522,
     -32031, 9623,  26035,  -12362, -29218, 1563,   21128, 3676,   31916,  7853,  -30705,
     -18084, 9343,  -275,   -16867, -16319, -25163, 6253,  -12397, 27971,  -4561},
    {7232,  -13187, 12429, -7712,  13030,  -10226, 19422,  -13707, 6528,  22135, 20793,
     19126, -10386, -5701, 27098,  1547,   24015,  6860,   27591,  12289, -4738, -9718,
     25965, -6234,  -4345, -11521, -16129, 26072,  -31896, 26659,  -8847, -3234},
    {-26091, -31885, 25636, -18593, 28350,  6339,   -4226,  -27927, -27446, -3055, 729,
     14379,  20009,  31736, 26076,  -30765, -22452, 14268,  -23915, 19627,  12591, -20987,
     21487,  15577,  4070,  -5346,  -190,   14301,  -27387, 26480,  -28718, -1327}};

typedef struct {
    int32_t a[16];
    int32_t b[16];
    int32_t expect[16];
} test_mm512_sub_epi32_data_model;
static test_mm512_sub_epi32_data_model g_test_mm512_sub_epi32_data = {
    {-2147483647, 2147483645, -27471, -26305, -243156, -3887, 15196, 23902, -20918, 190380, 21522, -32031, 96233,
     260335, -12362, -292318},
    {8, -10, 12429, -7712, 13030, -10226, 193422, -13707, 6528, 22135, 20793, 191326, -10386, -5701, 27098, 15347},
    {2147483641, -2147483641, -39900, -18593, -256186, 6339, -178226, 37609, -27446, 168245, 729, -223357, 106619,
     266036, -39460, -307665}};

typedef struct {
    int64_t a[8];
    int64_t b[8];
    int64_t expect[8];
} test_mm512_sub_epi64_data_model;
static test_mm512_sub_epi64_data_model g_test_mm512_sub_epi64_data = {
    {-9223372036854775805, 9223372036854775804, -274877871, -2654305, -2431275156, -3845487, 1587196, 2390272},
    {20, -10, 1242954575787, -7744412, 137842030, -104557226, 1587196, -1378707},
    {9223372036854775791, -9223372036854775802, -1243229453658, 5090107, -2569117186, 100711739, 0, 3768979}};

typedef struct {
    int8_t a[64];
    int8_t b[64];
    int8_t expect[64];
} test_mm512_sub_epi8_data_model;
static test_mm512_sub_epi8_data_model g_test_mm512_sub_epi8_data = {
    {-43, 112,  49,  -65, 36,  81, -36, -34, -54,  8,   -110, 97,  23, 51,  54,  94,  -101, 8,   -36, 44,   45,  -113,
     -36, -1,   109, -99, -63, 53, -19, 19,  -61,  -81, -64,  -86, -1, 30,  -44, -74, -102, -42, 61,  -122, -13, 86,
     -92, -124, 90,  69,  106, 56, 69,  22,  -125, 74,  2,    -92, 21, -67, 101, 104, -4,   -16, -97, -15},
    {-64, -3,  13,  96,   102, -114, 94,  -11,  0,    -9,   -71,  54,   -18, 59,  90,  -117,
     79,  76,  71,  -127, -2,  -118, -19, 38,   -121, 127,  127,  88,   -24, -93, -15, -34,
     55,  29,  86,  -84,  45,  48,   53,  -121, -12,  126,  59,   96,   -23, -25, -77, -101,
     111, -23, -42, -102, 76,  -99,  -95, -65,  -86,  -120, -109, -119, 108, -42, -75, -118},
    {21,  115, 36,  95,  -66, -61, 126, -23, -54, 17,  -39,  43,   41,  -8,  -36, -45,  76,   -68, -107, -85, 47,  5,
     -17, -39, -26, 30,  66,  -35, 5,   112, -46, -47, -119, -115, -87, 114, -89, -122, 101,  79,  73,   8,   -72, -10,
     -69, -99, -89, -86, -5,  79,  111, 124, 55,  -83, 97,   -27,  107, 53,  -46, -33,  -112, 26,  -22,  103}};

typedef struct {
    float64_t a[8];
    float64_t b[8];
    float64_t expect[8];
} test_mm512_sub_pd_data_model;
static test_mm512_sub_pd_data_model g_test_mm512_sub_pd_data = {
    {45.014000, 49454.000000, 120.000000, -1451548.000000, -145.200000, 112.000000, 11.400000, 457788.000000},
    {0.000125, 7.454500, 20.000000, 0.020000, 21.520000, 5145.000000, 65421.000000, 11.250000},
    {45.013875, 49446.545500, 100.000000, -1451548.020000, -166.720000, -5033.000000, -65409.600000, 457776.750000}};

typedef struct {
    float32_t a[16];
    float32_t b[16];
    float32_t expect[16];
} test_mm512_sub_ps_data_model;
static test_mm512_sub_ps_data_model g_test_mm512_sub_ps_data = {
    {1.550000, 127.245003, 8.000000, -9.562000, -100.000000, -128.845703, 1045481.000000, 7.125480, 16.145000,
     20.000999, 58.698002, 57.146999, 67.156998, 30.124500, 40.658001, 14.650000},
    {4.045000, 20.540001, 2.545000, 3.100000, -10.054500, 5.450000, 47.125469, 34.256100, 12.012000, 20.000999,
     58.698002, 4487.120117, 120145.000000, 11.047000, 12.200000, 0.001400},
    {-2.495000, 106.705002, 5.455000, -12.662001, -89.945503, -134.295700, 1045433.875000, -27.130619, 4.133000,
     0.000000, 0.000000, -4429.973145, -120077.843750, 19.077499, 28.458000, 14.648600}};

typedef struct {
    float64_t a[8];
    float64_t b[8];
    float64_t expect[8];
} test_mm512_sub_round_pd_data_model;
static test_mm512_sub_round_pd_data_model g_test_mm512_sub_round_pd_data = {
    {45.014000, 49454.000000, 120.000000, -1451548.000000, -145.200000, 112.000000, 11.400000, 457788.000000},
    {0.000125, 7.454500, 20.000000, 0.020000, 21.520000, 5145.000000, 65421.000000, 11.250000},
    {45.013875, 49446.545500, 100.000000, -1451548.020000, -166.720000, -5033.000000, -65409.600000, 457776.750000}};

typedef struct {
    float32_t a[16];
    float32_t b[16];
    float32_t expect[16];
} test_mm512_sub_round_ps_data_model;
static test_mm512_sub_round_ps_data_model g_test_mm512_sub_round_ps_data = {
    {1.550000, 127.245003, 8.000000, -9.562000, -100.000000, -128.845703, 1045481.000000, 7.125480, 16.145000,
     20.000000, 58.698002, 57.146999, 67.156998, 30.124500, 40.658001, 14.650000},
    {4.045000, 20.540001, 2.545000, 3.100000, -10.054500, 5.450000, -47.125469, 34.256100, 12.012000, 20.000999,
     58.698002, 4487.120117, 120145.000000, 11.047000, 12.200000, 0.001400},
    {-2.495000, 106.705002, 5.455000, -12.662001, -89.945503, -134.295700, 1045528.125000, -27.130619, 4.133000,
     -0.000999, 0.000000, -4429.973145, -120077.843750, 19.077499, 28.458000, 14.648600}};

typedef struct {
    int16_t a[16];
    int16_t b[16];
    int16_t expect[16];
} test_mm256_subs_epi16_data_model;
static test_mm256_subs_epi16_data_model g_test_mm256_subs_epi16_data = {
    {-18859, 20464, -27471, -26305, -24156, -3887, 15196, 23902, -20918, 19080, 21522, -32031, 9623, 26035, -12362,
     -29218},
    {7232, -13187, 12429, -7712, 13030, -10226, 19422, -13707, 6528, 22135, 20793, 19126, -10386, -5701, 27098, 1547},
    {-26091, 32767, -32768, -18593, -32768, 6339, -4226, 32767, -27446, -3055, 729, -32768, 20009, 31736, -32768,
     -30765}};

typedef struct {
    int8_t a[32];
    int8_t b[32];
    int8_t expect[32];
} test_mm256_subs_epi8_data_model;
static test_mm256_subs_epi8_data_model g_test_mm256_subs_epi8_data = {
    {-43,  112, 49,  -65, 36, 81,   -36, -34, -54, 8,   -110, 97, 23,  51, 54,  94,
     -101, 8,   -36, 44,  45, -113, -36, -1,  109, -99, -63,  53, -19, 19, -61, -81},
    {-64, -3, 13, 96,   102, -114, 94,  -11, 0,    -9,  -71, 54, -18, 59,  90,  -117,
     79,  76, 71, -127, -2,  -118, -19, 38,  -121, 127, 127, 88, -24, -93, -15, -34},
    {21,   115, 36,   -128, -66, 127, -128, -23, -54, 17,   -39,  43,  41, -8,  -36, 127,
     -128, -68, -107, 127,  47,  5,   -17,  -39, 127, -128, -128, -35, 5,  112, -46, -47}};

typedef struct {
    uint16_t a[16];
    uint16_t b[16];
    uint16_t expect[16];
} test_mm256_subs_epu16_data_model;
static test_mm256_subs_epu16_data_model g_test_mm256_subs_epu16_data = {
    {48115, 53651, 11817, 10729, 43624, 5083, 47771, 73, 33342, 33488, 60520, 62003, 28030, 18563, 21829, 15359},
    {56328, 10349, 60556, 52706, 57882, 45737, 9403, 27268, 35617, 46221, 52222, 55106, 35299, 51054, 18674, 4409},
    {0, 43302, 0, 0, 0, 0, 38368, 0, 0, 0, 8298, 6897, 0, 0, 3155, 10950}};

typedef struct {
    uint8_t a[32];
    uint8_t b[32];
    uint8_t expect[32];
} test_mm256_subs_epu8_data_model;
static test_mm256_subs_epu8_data_model g_test_mm256_subs_epu8_data = {
    {243, 147, 41, 233, 104, 219, 155, 73,  62,  208, 104, 51, 126, 131, 69,  255,
     250, 166, 31, 5,   169, 48,  156, 200, 155, 104, 150, 69, 126, 114, 186, 253},
    {8,   109, 140, 226, 26,  169, 187, 132, 33,  141, 254, 66, 227, 94,  242, 57,
     146, 35,  143, 135, 224, 68,  121, 218, 152, 3,   155, 20, 200, 196, 114, 180},
    {235, 38,  0, 7, 78, 50, 0,  0, 29, 67,  0, 0,  0, 37, 0,  198,
     104, 131, 0, 0, 0,  0,  35, 0, 3,  101, 0, 49, 0, 0,  72, 73}};

typedef struct {
    int16_t a[32];
    int16_t b[32];
    int16_t expect[32];
} test_mm512_subs_epi16_data_model;
static test_mm512_subs_epi16_data_model g_test_mm512_subs_epi16_data = {
    {-18859, 20464, -27471, -26305, -24156, -3887,  15196, 23902,  -20918, 19080, 21522,
     -32031, 9623,  26035,  -12362, -29218, 1563,   21128, 3676,   31916,  7853,  -30705,
     -18084, 9343,  -275,   -16867, -16319, -25163, 6253,  -12397, 27971,  -4561},
    {7232,  -13187, 12429, -7712,  13030,  -10226, 19422,  -13707, 6528,  22135, 20793,
     19126, -10386, -5701, 27098,  1547,   24015,  6860,   27591,  12289, -4738, -9718,
     25965, -6234,  -4345, -11521, -16129, 26072,  -31896, 26659,  -8847, -3234},
    {-26091, 32767, -32768, -18593, -32768, 6339,   -4226, 32767,  -27446, -3055, 729,
     -32768, 20009, 31736,  -32768, -30765, -22452, 14268, -23915, 19627,  12591, -20987,
     -32768, 15577, 4070,   -5346,  -190,   -32768, 32767, -32768, 32767,  -1327}};

typedef struct {
    int8_t a[64];
    int8_t b[64];
    int8_t expect[64];
} test_mm512_subs_epi8_data_model;
static test_mm512_subs_epi8_data_model g_test_mm512_subs_epi8_data = {
    {-43, 112,  49,  -65, 36,  81, -36, -34, -54,  8,   -110, 97,  23, 51,  54,  94,  -101, 8,   -36, 44,   45,  -113,
     -36, -1,   109, -99, -63, 53, -19, 19,  -61,  -81, -64,  -86, -1, 30,  -44, -74, -102, -42, 61,  -122, -13, 86,
     -92, -124, 90,  69,  106, 56, 69,  22,  -125, 74,  2,    -92, 21, -67, 101, 104, -4,   -16, -97, -15},
    {-64, -3,  13,  96,   102, -114, 94,  -11,  0,    -9,   -71,  54,   -18, 59,  90,  -117,
     79,  76,  71,  -127, -2,  -118, -19, 38,   -121, 127,  127,  88,   -24, -93, -15, -34,
     55,  29,  86,  -84,  45,  48,   53,  -121, -12,  126,  59,   96,   -23, -25, -77, -101,
     111, -23, -42, -102, 76,  -99,  -95, -65,  -86,  -120, -109, -119, 108, -42, -75, -118},
    {21,   115,  36,   -128, -66,  127,  -128, -23, -54, 17,   -39,  43,  41,   -8,  -36, 127,
     -128, -68,  -107, 127,  47,   5,    -17,  -39, 127, -128, -128, -35, 5,    112, -46, -47,
     -119, -115, -87,  114,  -89,  -122, -128, 79,  73,  -128, -72,  -10, -69,  -99, 127, 127,
     -5,   79,   111,  124,  -128, 127,  97,   -27, 107, 53,   127,  127, -112, 26,  -22, 103}};

typedef struct {
    uint16_t a[32];
    uint16_t b[32];
    uint16_t expect[32];
} test_mm512_subs_epu16_data_model;
static test_mm512_subs_epu16_data_model g_test_mm512_subs_epu16_data = {
    {48115, 53651, 11817, 10729, 43624, 5083,  47771, 73,    33342, 33488, 60520, 62003, 28030, 18563, 21829, 15359,
     9466,  14758, 64031, 8453,  17833, 22320, 22940, 27336, 58011, 36968, 47510, 42565, 3198,  51058, 14266, 29437},
    {56328, 10349, 60556, 52706, 57882, 45737, 9403,  27268, 35617, 46221, 52222, 55106, 35299, 51054, 18674, 4409,
     3474,  21283, 25487, 42119, 13536, 68,    22393, 56282, 60824, 52995, 33435, 10004, 61128, 25028, 882,   23732},
    {0,    43302, 0,     0, 0,    0,     38368, 0, 0, 0, 8298,  6897,  0, 0,     3155,  10950,
     5992, 0,     38544, 0, 4297, 22252, 547,   0, 0, 0, 14075, 32561, 0, 26030, 13384, 5705}};

typedef struct {
    uint8_t a[64];
    uint8_t b[64];
    uint8_t expect[64];
} test_mm512_subs_epu8_data_model;
static test_mm512_subs_epu8_data_model g_test_mm512_subs_epu8_data = {
    {243, 147, 41,  233, 104, 219, 155, 73,  62,  208, 104, 51,  126, 131, 69,  255, 250, 166, 31,  5,   169, 48,
     156, 200, 155, 104, 150, 69,  126, 114, 186, 253, 4,   215, 50,  170, 189, 32,  84,  52,  129, 242, 55,  44,
     0,   122, 16,  111, 26,  56,  36,  39,  190, 59,  48,  2,   11,  200, 44,  248, 147, 232, 233, 184},
    {8,   109, 140, 226, 26,  169, 187, 132, 33,  141, 254, 66,  227, 94,  242, 57, 146, 35,  143, 135, 224, 68,
     121, 218, 152, 3,   155, 20,  200, 196, 114, 180, 163, 35,  221, 219, 219, 89, 232, 239, 156, 23,  56,  182,
     158, 187, 119, 21,  71,  76,  227, 225, 71,  18,  111, 177, 244, 66,  244, 45, 114, 163, 87,  3},
    {235, 38, 0, 7,   78, 50, 0, 0, 29,  67, 0, 0,   0, 37,  0, 198, 104, 131, 0,   0,   0, 0,
     35,  0,  3, 101, 0,  49, 0, 0, 72,  73, 0, 180, 0, 0,   0, 0,   0,   0,   0,   219, 0, 0,
     0,   0,  0, 90,  0,  0,  0, 0, 119, 41, 0, 0,   0, 134, 0, 203, 33,  69,  146, 181}};

typedef struct {
    int32_t a[16];
    int32_t b[16];
    int32_t expect[16];
} test_mm512_subr_epi32_data_model;
static test_mm512_subr_epi32_data_model g_test_mm512_subr_epi32_data = {
    {8, -10, 12429, -7712, 13030, -10226, 193422, -13707, 6528, 22135, 20793, 191326, -10386, -5701, 27098, 15347},
    {-2147483647, 2147483645, -27471, -26305, -243156, -3887, 15196, 23902, -20918, 190380, 21522, -32031, 96233,
     260335, -12362, -292318},
    {2147483641, -2147483641, -39900, -18593, -256186, 6339, -178226, 37609, -27446, 168245, 729, -223357, 106619,
     266036, -39460, -307665}};

typedef struct {
    float64_t a[8];
    float64_t b[8];
    float64_t expect[8];
} test_mm512_subr_pd_data_model;
static test_mm512_subr_pd_data_model g_test_mm512_subr_pd_data = {
    {0.000125, 7.454500, 20.000000, 0.020000, 21.520000, 5145.000000, 65421.000000, 11.250000},
    {45.014000, 49454.000000, 120.000000, -1451548.000000, -145.200000, 112.000000, 11.400000, 457788.000000},
    {45.013875, 49446.545500, 100.000000, -1451548.020000, -166.720000, -5033.000000, -65409.600000, 457776.750000}};

typedef struct {
    float32_t a[16];
    float32_t b[16];
    float32_t expect[16];
} test_mm512_subr_ps_data_model;
static test_mm512_subr_ps_data_model g_test_mm512_subr_ps_data = {
    {4.045000, 20.540001, 2.545000, 3.100000, -10.054500, 5.450000, 47.125469, 34.256100, 12.012000, 20.000999,
     58.698002, 4487.120117, 120145.000000, 11.047000, 12.200000, 0.001400},
    {1.550000, 127.245003, 8.000000, -9.562000, -100.000000, -128.845703, 1045481.000000, 7.125480, 16.145000,
     20.000999, 58.698002, 57.146999, 67.156998, 30.124500, 40.658001, 14.650000},
    {-2.495000, 106.705002, 5.455000, -12.662001, -89.945503, -134.295700, 1045433.875000, -27.130619, 4.133000,
     0.000000, 0.000000, -4429.973145, -120077.843750, 19.077499, 28.458000, 14.648600}};

typedef struct {
    float64_t a[8];
    float64_t b[8];
    float64_t expect[8];
} test_mm512_subr_round_pd_data_model;
static test_mm512_subr_round_pd_data_model g_test_mm512_subr_round_pd_data = {
    {0.000125, 7.454500, 20.000000, 0.020000, 21.520000, 5145.000000, 65421.000000, 11.250000},
    {45.014000, 49454.000000, 120.000000, -1451548.000000, -145.200000, 112.000000, 11.400000, 457788.000000},
    {45.013875, 49446.545500, 100.000000, -1451548.020000, -166.720000, -5033.000000, -65409.600000, 457776.750000}};

typedef struct {
    float32_t a[16];
    float32_t b[16];
    float32_t expect[16];
} test_mm512_subr_round_ps_data_model;
static test_mm512_subr_round_ps_data_model g_test_mm512_subr_round_ps_data = {
    {4.045000, 20.540001, 2.545000, 3.100000, -10.054500, 5.450000, -47.125469, 34.256100, 12.012000, 20.000999,
     58.698002, 4487.120117, 120145.000000, 11.047000, 12.200000, 0.001400},
    {1.550000, 127.245003, 8.000000, -9.562000, -100.000000, -128.845703, 1045481.000000, 7.125480, 16.145000,
     20.000000, 58.698002, 57.146999, 67.156998, 30.124500, 40.658001, 14.650000},
    {-2.495000, 106.705002, 5.455000, -12.662001, -89.945503, -134.295700, 1045528.125000, -27.130619, 4.133000,
     -0.000999, 0.000000, -4429.973145, -120077.843750, 19.077499, 28.458000, 14.648600}};

typedef struct {
    int32_t a[16];
    int32_t b[16];
    int32_t expect[16];
    __mmask16 borrow;
} test_mm512_subsetb_epi32_data_model;
static test_mm512_subsetb_epi32_data_model g_test_mm512_subsetb_epi32_data = {
    {-1, 2147483645, -27471, -26305, -243156, -3887, 15196, 23902, -20918, 190380, 21522, -32031, 96233,
     260335, -12362, -292318},
    {0, -10, 12429, -7712, 13030, -10226, 193422, -13707, 6528, 22135, 20793, 191326, -10386, -5701, 27098, 15347},
    {-1, -2147483641, -39900, -18593, -256186, 6339, -178226, 37609, -27446, 168245, 729, -223357, 106619,
     266036, -39460, -307665},
    0x30ca};

typedef struct {
    int32_t a[16];
    int32_t b[16];
    int32_t expect[16];
    __mmask16 borrow;
} test_mm512_subrsetb_epi32_data_model;
static test_mm512_subrsetb_epi32_data_model g_test_mm512_subrsetb_epi32_data = {
    {8, -10, 12429, -7712, 13030, -10226, 193422, -13707, 6528, 22135, 20793, 191326, -10386, -5701, 27098, 15347},
    {-2147483647, 2147483645, -27471, -26305, -243156, -3887, 15196, 23902, -20918, 190380, 21522, -32031, 96233,
     260335, -12362, -292318},
    {2147483641, -2147483641, -39900, -18593, -256186, 6339, -178226, 37609, -27446, 168245, 729, -223357, 106619,
     266036, -39460, -307665},
    0x30ca};

typedef struct {
    int64_t a[8];
    int64_t b[8];
    int64_t expect[8];
} test_mm512_permutexvar_epi64_data_model;
static test_mm512_permutexvar_epi64_data_model g_test_mm512_permutexvar_epi64_data = {
    {-9223372036854775805, 9223372036854775804, -274877871, -2654305, -2431275156, -3845487, 1587196, 2390272},
    {20, -10, 1242954575787, -7744412, 137842030, -104557226, 1587196, -1378707},
    {-7744412, 137842030, -10, -1378707, 137842030, -10, 137842030, 20}};

typedef struct {
    int32_t a[16];
    const int imm8;
    int32_t expect[4];
} test_mm512_extracti32x4_epi32_data_model;
static test_mm512_extracti32x4_epi32_data_model g_test_mm512_extracti32x4_epi32_data = {
    {1, 1, 1, 1, 1, 2, 4, 8, 16, 4, 5, 8, 10, 5, 4, 8}, 2, {16, 4, 5, 8}};

typedef struct {
    int8_t a[64];
    int8_t b[64];
    __mmask64 expect;
} test_mm512_test_epi8_mask_data_model;
static test_mm512_test_epi8_mask_data_model g_test_mm512_test_epi8_mask_data = {
    {88,   80,  -45, 59,  -96, 21,  -105, 88,  -38,  -70, -5,  -69, -117, -48,  -119, 48,
     -122, -11, -37, 39,  -48, 108, -53,  57,  22,   -13, -90, 50,  -103, 112,  -2,   -125,
     -95,  93,  40,  119, 65,  -31, 41,   49,  -115, -48, 83,  -26, -124, -114, 119,  -122,
     9,    21,  -24, -85, -15, -75, 38,   -39, -118, 103, 44,  74,  36,   -77,  106,  52},
    {10,  20, 90,   -50,  -96, -15, -114, -47, 81, 78,   -77, 32, -22, 62,  -4,  97,   0,    -39, -80, -5,  -68,  -24,
     69,  37, 115,  -111, 47,  -78, -126, -94, 33, 4,    -8,  -4, 4,   121, 100, -116, -102, -65, -92, -76, -126, 108,
     -42, 2,  -111, -103, 99,  -78, 13,   -87, 12, -102, 102, 51, 41,  94,  -51, 48,   89,   27,  -71, -12},
    16712858197844492287ULL};

typedef struct {
    int32_t a[16];
    int32_t b[16];
    __mmask16 expect;
} test_mm512_test_epi32_mask_data_model;
static test_mm512_test_epi32_mask_data_model g_test_mm512_test_epi32_mask_data = {
    {15196, 23902, -20918, 545, 45, 0, -1, 489, 444, 9998, 21522, -32031, 96233, 260335, -12362, -292318},
    {193422, -13707, 6528, 89, 893214, 47, 558745, 555, 555, 52864, 20793, 191326, -10386, -5701, 27098, 15347},
    65503};

typedef struct {
    int64_t a[8];
    int64_t b[8];
    __mmask8 expect;
} test_mm512_test_epi64_mask_data_model;
static test_mm512_test_epi64_mask_data_model g_test_mm512_test_epi64_mask_data = {
    {444, 9998, 21522, -32031, 96233, 260335, -12362, -292318},
    {5888755, 52864, 20793, 191326, -10386, -5701, 27098, 15347},
    255};

typedef struct {
    int32_t a[8];
    int32_t b[8];
    int32_t expect[8];
} test_mm256_mul_epi32_data_model;
static test_mm256_mul_epi32_data_model g_test_mm256_mul_epi32_data = {
    {-2147483647, 2147483645, -27471, -26305, -243156, -3887, 15196, 23902},
    {8, -10, 12429, -7712, 13030, -10226, 193422, -13707},
    {8, -4, -341437059, -1, 1126644616, -1, -1355726584, 0}};

typedef struct {
    uint32_t a[8];
    uint32_t b[8];
    uint32_t expect[8];
} test_mm256_mul_epu32_data_model;
static test_mm256_mul_epu32_data_model g_test_mm256_mul_epu32_data = {
    {4294967290, 2147483645, 27471, 26305, 243156, 3887, 15196, 23902},
    {8, 8, 12429, 7712, 0, 1, 193422, 13707},
    {4294967248, 7, 341437059, 0, 0, 0, 2939240712, 0}};

typedef struct {
    float64_t a[4];
    float64_t b[4];
    float64_t expect[4];
} test_mm256_mul_pd_data_model;
static test_mm256_mul_pd_data_model g_test_mm256_mul_pd_data = {
    {1.550000, 127.245000, 8.000000, -9.562000},
    {4.045000, 20.540000, 2.545000, 3.100000},
    {6.269750000, 2613.612300000, 20.360000000, -29.642200000}};

typedef struct {
    float32_t a[8];
    float32_t b[8];
    float32_t expect[8];
} test_mm256_mul_ps_data_model;
static test_mm256_mul_ps_data_model g_test_mm256_mul_ps_data = {
    {1.550000, 127.245003, 8.000000, -9.562000, -100.000000, -128.845703, 1045481.000000, 7.125480},
    {4.045000, 20.540001, 2.545000, 3.100000, -10.054500, 5.450000, -47.125469, 34.256100},
    {6.269750, 2613.612549, 20.360001, -29.642200, 1005.449951, -702.209045, -49268784.000000, 244.091156}};

typedef struct {
    int32_t a[16];
    int32_t b[16];
    int32_t expect[16];
} test_mm512_mul_epi32_data_model;
static test_mm512_mul_epi32_data_model g_test_mm512_mul_epi32_data = {
    {-2147483647, 2147483645, -27471, -26305, -243156, -3887, 15196, 23902, -20918, 190380, 21522, -32031, 96233,
     260335, -12362, -292318},
    {8, -10, 12429, -7712, 13030, -10226, 193422, -13707, 6528, 22135, 20793, 191326, -10386, -5701, 27098, 15347},
    {8, -4, -341437059, -1, 1126644616, -1, -1355726584, 0, -136552704, -1, 447506946, 0, -999475938, -1, -334985476,
     -1}};

typedef struct {
    uint32_t a[16];
    uint32_t b[16];
    uint32_t expect[16];
} test_mm512_mul_epu32_data_model;
static test_mm512_mul_epu32_data_model g_test_mm512_mul_epu32_data = {
    {4294967290, 2147483645, 27471, 26305, 243156, 3887, 15196, 23902, 20918, 190380, 21522, 32031, 96233, 260335,
     12362, 292318},
    {8, 8, 12429, 7712, 0, 1, 193422, 13707, 6528, 22135, 20793, 191326, 10386, 5701, 27098, 15347},
    {4294967248, 7, 341437059, 0, 0, 0, 2939240712, 0, 136552704, 0, 447506946, 0, 999475938, 0, 334985476, 0}};

typedef struct {
    float64_t a[8];
    float64_t b[8];
    float64_t expect[8];
} test_mm512_mul_pd_data_model;
static test_mm512_mul_pd_data_model g_test_mm512_mul_pd_data = {
    {1.550000, 127.245000, 8.000000, -9.562000, -100.000000, -128.845700, 1045481.000000, 7.125480},
    {4.045000, 20.540000, 2.545000, 3.100000, -10.054500, 5.450000, -47.125470, 34.256100},
    {6.269750000, 2613.612300000, 20.360000000, -29.642200000, 1005.450000000, -702.209065000, -49268783.501070000,
     244.091155428}};

typedef struct {
    float32_t a[16];
    float32_t b[16];
    float32_t expect[16];
} test_mm512_mul_ps_data_model;
static test_mm512_mul_ps_data_model g_test_mm512_mul_ps_data = {
    {1.550000, 127.245003, 8.000000, -9.562000, -100.000000, -128.845703, 1045481.000000, 7.125480, 16.145000,
     20.000000, 58.698002, 57.146999, 67.156998, 30.124500, 40.658001, 0.000000},
    {4.045000, 20.540001, 2.545000, 3.100000, -10.054500, 5.450000, -47.125469, 34.256100, 12.012000, 20.000999,
     58.698002, 4487.120117, 120145.000000, 11.047000, 12.200000, 0.004580},
    {6.269750, 2613.612549, 20.360001, -29.642200, 1005.449951, -702.209045, -49268784.000000, 244.091156, 193.933746,
     400.019989, 3445.455322, 256425.453125, 8068577.500000, 332.785339, 496.027618, 0.000000}};

typedef struct {
    float64_t a[8];
    float64_t b[8];
    float64_t expect[8];
} test_mm512_mul_round_pd_data_model;
static test_mm512_mul_round_pd_data_model g_test_mm512_mul_round_pd_data = {
    {-9.562000, -100.000000, -128.845700, 1045481.000000, 7.125480, 16.145000, 20.000000, 58.698000},
    {3.100000, -10.054500, 5.450000, -47.125470, 34.256100, 12.012000, 20.001000, 58.698000},
    {-29.642200000, 1005.450000000, -702.209065000, -49268783.501070000, 244.091155428, 193.933740000, 400.020000000,
     3445.455204000}};

typedef struct {
    float32_t a[16];
    float32_t b[16];
    float32_t expect[16];
} test_mm512_mul_round_ps_data_model;
static test_mm512_mul_round_ps_data_model g_test_mm512_mul_round_ps_data = {
    {-9.562000, -100.000000, -128.845703, 1045481.000000, 7.125480, 16.145000, 20.000000, 58.698002, 57.146999,
     67.156998, 30.124500, 40.658001, 0.000000, 1.110000, 528.890015, 8.000000},
    {3.100000, -10.054500, 5.450000, -47.125469, 34.256100, 12.012000, 20.000999, 58.698002, 4487.120117, 120145.000000,
     11.047000, 12.200000, 0.004580, 4.400000, 11.890000, 8925.500000},
    {-29.642200, 1005.449951, -702.209045, -49268784.000000, 244.091156, 193.933746, 400.019989, 3445.455322,
     256425.453125, 8068577.500000, 332.785339, 496.027618, 0.000000, 4.884000, 6288.502441, 71404.000000}};

typedef struct {
    int16_t a[16];
    int16_t b[16];
    int16_t expect[16];
} test_mm256_mulhi_epi16_data_model;
static test_mm256_mulhi_epi16_data_model g_test_mm256_mulhi_epi16_data = {
    {-18859, 20464, -27471, -26305, -24156, -3887, 15196, 23902, -20918, 19080, 21522, -32031, 9623, 26035, -12362,
     -29218},
    {7232, -13187, 12429, -7712, 13030, -10226, 19422, -13707, 6528, 22135, 20793, 19126, -10386, -5701, 27098, 1547},
    {-2082, -4118, -5210, 3095, -4803, 606, 4503, -5000, -2084, 6444, 6828, -9348, -1526, -2265, -5112, -690}};

typedef struct {
    uint16_t a[16];
    uint16_t b[16];
    uint16_t expect[16];
} test_mm256_mulhi_epu16_data_model;
static test_mm256_mulhi_epu16_data_model g_test_mm256_mulhi_epu16_data = {
    {48115, 53651, 11817, 10729, 43624, 5083, 47771, 73, 33342, 33488, 60520, 62003, 28030, 18563, 21829, 15359},
    {56328, 10349, 60556, 52706, 57882, 45737, 9403, 27268, 35617, 46221, 52222, 55106, 35299, 51054, 18674, 4409},
    {41354, 8472, 10919, 8628, 38529, 3547, 6854, 30, 18120, 23618, 48225, 52135, 15097, 14460, 6220, 1033}};

typedef struct {
    int16_t a[32];
    int16_t b[32];
    int16_t expect[32];
} test_mm512_mulhi_epi16_data_model;
static test_mm512_mulhi_epi16_data_model g_test_mm512_mulhi_epi16_data = {
    {-18859, 20464, -27471, -26305, -24156, -3887,  15196, 23902,  -20918, 19080, 21522,
     -32031, 9623,  26035,  -12362, -29218, 1563,   21128, 3676,   31916,  7853,  -30705,
     -18084, 9343,  -275,   -16867, -16319, -25163, 6253,  -12397, 27971,  -4561},
    {7232,  -13187, 12429, -7712,  13030,  -10226, 19422,  -13707, 6528,  22135, 20793,
     19126, -10386, -5701, 27098,  1547,   24015,  6860,   27591,  12289, -4738, -9718,
     25965, -6234,  -4345, -11521, -16129, 26072,  -31896, 26659,  -8847, -3234},
    {-2082, -4118, -5210, 3095, -4803, 606,  4503,  -5000, -2084, 6444, 6828, -9348,  -1526, -2265, -5112, -690,
     572,   2211,  1547,  5984, -568,  4553, -7165, -889,  18,    2965, 4016, -10011, -3044, -5043, -3776, 225}};

typedef struct {
    uint16_t a[32];
    uint16_t b[32];
    uint16_t expect[32];
} test_mm512_mulhi_epu16_data_model;
static test_mm512_mulhi_epu16_data_model g_test_mm512_mulhi_epu16_data = {
    {48115, 53651, 11817, 10729, 43624, 5083,  47771, 73,    33342, 33488, 60520, 62003, 28030, 18563, 21829, 15359,
     9466,  14758, 64031, 8453,  17833, 22320, 22940, 27336, 58011, 36968, 47510, 42565, 3198,  51058, 14266, 29437},
    {56328, 10349, 60556, 52706, 57882, 45737, 9403,  27268, 35617, 46221, 52222, 55106, 35299, 51054, 18674, 4409,
     3474,  21283, 25487, 42119, 13536, 68,    22393, 56282, 60824, 52995, 33435, 10004, 61128, 25028, 882,   23732},
    {41354, 8472, 10919, 8628, 38529, 3547, 6854, 30,    18120, 23618, 48225, 52135, 15097, 14460, 6220, 1033,
     501,   4792, 24901, 5432, 3683,  23,   7838, 23476, 53840, 29893, 24238, 6497,  2982,  19498, 191,  10659}};

typedef struct {
    int32_t a[16];
    int32_t b[16];
    int32_t expect[16];
} test_mm512_mulhi_epi32_data_model;
static test_mm512_mulhi_epi32_data_model g_test_mm512_mulhi_epi32_data = {
    {-2044617900, -567095272, -1177534049, 1579247274, -1775512468, -1288079916, 1157964942, -1205455363, -1227830238,
     2038814254, -740634116, -1381961705, -961458146, -2141144538, 1174921389, 288064003},
    {1663542419, 551916044, 1883567592, -910700319, 760327568, -343608356, 1203858730, -1715618161, 1316989780,
     -2088110026, 403733409, -1171448665, -44626873, 2031576200, -977291887, -1335482720},
    {-791928873, -72873426, -516410213, -334861921, -314314635, 103049683, 324572018, 481517313, -376496435, -991222562,
     -69620725, 376928875, 9990034, -1012789618, -267345725, -89570996}};

typedef struct {
    uint32_t a[16];
    uint32_t b[16];
    uint32_t expect[16];
} test_mm512_mulhi_epu32_data_model;
static test_mm512_mulhi_epu32_data_model g_test_mm512_mulhi_epu32_data = {
    {2962023422, 1580466109, 1592432053, 2030319111, 1978641068, 3761711726, 678013506, 2334737703, 1766952438,
     1973346953, 1732746277, 2470577604, 1481071869, 1847054851, 2990013849, 2379125171},
    {2724133815, 2540255767, 2887352417, 3246089225, 3137576777, 174631087, 2587136935, 1609460072, 3240741195,
     2232628701, 2881515244, 3109730594, 1499924219, 1620516098, 858852952, 2031578088},
    {1878698394, 934765708, 1070534935, 1534492939, 1445444828, 152949199, 408411441, 874900052, 1333243110, 1025793851,
     1162508225, 1788798430, 517232242, 696904519, 597904953, 1125358642}};

typedef struct {
    int16_t a[16];
    int16_t b[16];
    int16_t expect[16];
} test_mm256_mullo_epi16_data_model;
static test_mm256_mullo_epi16_data_model g_test_mm256_mullo_epi16_data = {
    {-18859, 32767, -27471, -26305, 32764, -3887, 15196, 23902, -20918, -32764, 21522, -32031, 9623, 26035, -12362,
     -29218},
    {7232, -2, 12429, -7712, 8, -10226, 19422, -13707, 6528, 8, 20793, 19126, -10386, -5701, 27098, 1547},
    {-7872, 2, 5501, 30240, -32, -31890, 28104, -10250, 24320, 32, 27138, 5622, -2078, 13505, -30980, 19594}};

typedef struct {
    int32_t a[8];
    int32_t b[8];
    int32_t expect[8];
} test_mm256_mullo_epi32_data_model;
static test_mm256_mullo_epi32_data_model g_test_mm256_mullo_epi32_data = {
    {-2147483647, 2147483645, -27471, -26305, -243156, -3887, 15196, 23902},
    {8, -10, 12429, -7712, 13030, -10226, 193422, -13707},
    {8, 30, -341437059, 202864160, 1126644616, 39748462, -1355726584, -327624714}};

typedef struct {
    int64_t a[4];
    int64_t b[4];
    int64_t expect[4];
} test_mm256_mullo_epi64_data_model;
static test_mm256_mullo_epi64_data_model g_test_mm256_mullo_epi64_data = {
    {-9223372036854775805, 9223372036854775804, -274877871, -2654305},
    {20, -10, 1242954575787, -7744412},
    {60, 40, 8827429858442771227, 20556031493660}};

typedef struct {
    int16_t a[32];
    int16_t b[32];
    int16_t expect[32];
} test_mm512_mullo_epi16_data_model;
static test_mm512_mullo_epi16_data_model g_test_mm512_mullo_epi16_data = {
    {-18859, 32767, -27471, -26305, 32764,  -3887,  15196, 23902,  -20918, -32764, 21522,
     -32031, 9623,  26035,  -12362, -29218, 1563,   21128, 3676,   31916,  7853,   -30705,
     -18084, 9343,  -275,   -16867, -16319, -25163, 6253,  -12397, 27971,  -4561},
    {7232,  -2,     12429, -7712,  8,      -10226, 19422,  -13707, 6528,  8,     20793,
     19126, -10386, -5701, 27098,  1547,   24015,  6860,   27591,  12289, -4738, -9718,
     25965, -6234,  -4345, -11521, -16129, 26072,  -31896, 26659,  -8847, -3234},
    {-7872, 2,     5501,  30240,  -32,   -31890, 28104,  -10250, 24320,  32,    27138,
     5622,  -2078, 13505, -30980, 19594, -16683, -27552, -25212, -17236, 16934, 5782,
     14380, 17242, 15227, 10467,  16575, 31160,  -19640, 6425,   4499,   4674}};

typedef struct {
    int32_t a[16];
    int32_t b[16];
    int32_t expect[16];
} test_mm512_mullo_epi32_data_model;
static test_mm512_mullo_epi32_data_model g_test_mm512_mullo_epi32_data = {
    {-2147483647, 2147483645, -27471, -26305, -243156, -3887, 15196, 23902, -20918, 190380, 21522, -32031, 96233,
     260335, -12362, -292318},
    {8, -10, 12429, -7712, 13030, -10226, 193422, -13707, 6528, 22135, 20793, 191326, -10386, -5701, 27098, 15347},
    {8, 30, -341437059, 202864160, 1126644616, 39748462, -1355726584, -327624714, -136552704, -80905996, 447506946,
     -1833395810, -999475938, -1484169835, -334985476, -191237050}};

typedef struct {
    int64_t a[8];
    int64_t b[8];
    int64_t expect[8];
} test_mm512_mullo_epi64_data_model;
static test_mm512_mullo_epi64_data_model g_test_mm512_mullo_epi64_data = {
    {-9223372036854775805, 9223372036854775804, -274877871, -2654305, -2431275156, -3845487, 1587196, 2390272},
    {20, -10, 1242954575787, -7744412, 137842030, -104557226, 1587196, -1378707},
    {60, 40, 8827429858442771227, 20556031493660, -335131902991606680, 402073453339062, 2519191142416, -3295484738304}};

typedef struct {
    int64_t a[8];
    int64_t b[8];
    int64_t expect[8];
} test_mm512_mullox_epi64_data_model;
static test_mm512_mullox_epi64_data_model g_test_mm512_mullox_epi64_data = {
    {-9223372036854775805, 9223372036854775804, -274877871, -2654305, -2431275156, -3845487, 1587196, 2390272},
    {20, -10, 1242954575787, -7744412, 137842030, -104557226, 1587196, -1378707},
    {60, 40, 8827429858442771227, 20556031493660, -335131902991606680, 402073453339062, 2519191142416, -3295484738304}};

typedef struct {
    int16_t a[16];
    int16_t b[16];
    int16_t expect[16];
} test_mm256_mulhrs_epi16_data_model;
static test_mm256_mulhrs_epi16_data_model g_test_mm256_mulhrs_epi16_data = {
    {-18859, 20464, -27471, -26305, -24156, -3887, 15196, 23902, -20918, 19080, 21522, -32031, 9623, 26035, -12362,
     -29218},
    {7232, -13187, 12429, -7712, 13030, -10226, 19422, -13707, 6528, 22135, 20793, 19126, -10386, -5701, 27098, 1547},
    {-4162, -8235, -10420, 6191, -9605, 1213, 9007, -9998, -4167, 12889, 13657, -18696, -3050, -4530, -10223, -1379}};

typedef struct {
    int16_t a[32];
    int16_t b[32];
    int16_t expect[32];
} test_mm512_mulhrs_epi16_data_model;
static test_mm512_mulhrs_epi16_data_model g_test_mm512_mulhrs_epi16_data = {
    {-18859, 20464, -27471, -26305, -24156, -3887,  15196, 23902,  -20918, 19080, 21522,
     -32031, 9623,  26035,  -12362, -29218, 1563,   21128, 3676,   31916,  7853,  -30705,
     -18084, 9343,  -275,   -16867, -16319, -25163, 6253,  -12397, 27971,  -4561},
    {7232,  -13187, 12429, -7712,  13030,  -10226, 19422,  -13707, 6528,  22135, 20793,
     19126, -10386, -5701, 27098,  1547,   24015,  6860,   27591,  12289, -4738, -9718,
     25965, -6234,  -4345, -11521, -16129, 26072,  -31896, 26659,  -8847, -3234},
    {-4162, -8235, -10420, 6191,  -9605, 1213, 9007,   -9998, -4167, 12889, 13657, -18696, -3050, -4530,  -10223, -1379,
     1145,  4423,  3095,   11969, -1135, 9106, -14330, -1777, 36,    5930,  8033,  -20021, -6087, -10086, -7552,  450}};

typedef struct {
    int64_t a[8];
    int64_t expect[8];
} test_mm512_bslli_epi128_data_model;
static test_mm512_bslli_epi128_data_model g_test_mm512_bslli_epi128_data = {
    {1, -1, 1073741824, 12, -200, -9223372036854775807, 9223372036854775807, 0},
    {0, 1, 0, 1073741824, 0, -200, 0, 9223372036854775807}};

typedef struct {
    int64_t a[8];
    int64_t expect[8];
} test_mm512_bsrli_epi128_data_model;
static test_mm512_bsrli_epi128_data_model g_test_mm512_bsrli_epi128_data = {
    {1, -1, 1073741824, 12, -200, -9223372036854775807, 9223372036854775807, 0},
    {-4294967296, 4294967295, 51539607552, 0, 8589934591, 2147483648, 2147483647, 0}};

typedef struct {
    int64_t a[2];
    uint64_t expect[2];
} test_mm_slli_si128_data_model;
static test_mm_slli_si128_data_model g_test_mm_slli_si128_data = {{1, 2}, {65536, 131072}};

typedef struct {
    int64_t a[2];
    uint64_t expect[2];
} test_mm_srli_si128_data_model;
static test_mm_srli_si128_data_model g_test_mm_srli_si128_data = {{100, 200}, {56294995342131200, 0}};

typedef struct {
    int32_t a[4];
    int b;
    int32_t expect[4];
} test_mm_slli_epi32_data_model;
static test_mm_slli_epi32_data_model g_test_mm_slli_epi32_data = {
    {1, -1, -2147483648, 2147483647}, 2, {4, -4, 0, -4}};

typedef struct {
    int64_t a[2];
    int b;
    int64_t expect[2];
} test_mm_slli_epi64_data_model;
static test_mm_slli_epi64_data_model g_test_mm_slli_epi64_data = {
    {1, 1073741824}, 2, {4, 4294967296}};

typedef struct {
    int64_t a[2];
    int b;
    uint64_t expect[2];
} test_mm_srli_epi64_data_model;
static test_mm_srli_epi64_data_model g_test_mm_srli_epi64_data = {
    {-1, 12}, 2, {4611686018427387903, 3}};

typedef struct {
    int32_t a[8];
    int64_t b[2];
    int32_t expect[8];
} test_mm256_sll_epi32_data_model;
static test_mm256_sll_epi32_data_model g_test_mm256_sll_epi32_data = {
    {1, -1, -2147483648, 2147483647, -15, 0, 1073741824, 12}, {2, 2}, {4, -4, 0, -4, -60, 0, 0, 48}};

typedef struct {
    int64_t a[4];
    int64_t b[2];
    int64_t expect[4];
} test_mm256_sll_epi64_data_model;
static test_mm256_sll_epi64_data_model g_test_mm256_sll_epi64_data = {
    {1, -1, 1073741824, 12}, {2, 2}, {4, -4, 4294967296, 48}};

typedef struct {
    int64_t a[8];
    int64_t b[2];
    int64_t expect[8];
} test_mm512_sll_epi64_data_model;
static test_mm512_sll_epi64_data_model g_test_mm512_sll_epi64_data = {
    {1, -1, 1073741824, 12, -200, -9223372036854775807, 9223372036854775807, 0},
    {2, 2},
    {4, -4, 4294967296, 48, -800, 4, -4, 0}};

typedef struct {
    int32_t a[8];
    int b;
    int32_t expect[8];
} test_mm256_slli_epi32_data_model;
static test_mm256_slli_epi32_data_model g_test_mm256_slli_epi32_data = {
    {1, -1, -2147483648, 2147483647, -15, 0, 1073741824, 12}, 2, {4, -4, 0, -4, -60, 0, 0, 48}};

typedef struct {
    int64_t a[4];
    int b;
    int64_t expect[4];
} test_mm256_slli_epi64_data_model;
static test_mm256_slli_epi64_data_model g_test_mm256_slli_epi64_data = {
    {1, -1, 1073741824, 12}, 2, {4, -4, 4294967296, 48}};

typedef struct {
    int64_t a[4];
    uint64_t expect[4];
} test_mm256_slli_si256_data_model;
static test_mm256_slli_si256_data_model g_test_mm256_slli_si256_data = {{1, 2, 3, 4}, {65536, 131072, 196608, 262144}};

typedef struct {
    int64_t a[4];
    uint64_t expect[4];
} test_mm256_srli_si256_data_model;
static test_mm256_srli_si256_data_model g_test_mm256_srli_si256_data = {{100, 200, 300, 400},
                                                                        {56294995342131200, 0, 112589990684262400, 0}};

typedef struct {
    int64_t a[8];
    unsigned int b;
    int64_t expect[8];
} test_mm512_slli_epi64_data_model;
static test_mm512_slli_epi64_data_model g_test_mm512_slli_epi64_data = {
    {1, -1, 1073741824, 12, -200, -9223372036854775807, 9223372036854775807, 0},
    2,
    {4, -4, 4294967296, 48, -800, 4, -4, 0}};

typedef struct {
    int64_t a[4];
    int b;
    uint64_t expect[4];
} test_mm256_srli_epi64_data_model;
static test_mm256_srli_epi64_data_model g_test_mm256_srli_epi64_data = {
    {1, -1, 1073741824, 12}, 2, {0, 4611686018427387903, 268435456, 3}};

typedef struct {
    int64_t a[8];
    unsigned int b;
    uint64_t expect[8];
} test_mm512_srli_epi64_data_model;
static test_mm512_srli_epi64_data_model g_test_mm512_srli_epi64_data = {
    {1, -1, 1073741824, 12, -200, -9223372036854775807, 9223372036854775807, 0},
    2,
    {0, 4611686018427387903, 268435456, 3, 4611686018427387854, 2305843009213693952, 2305843009213693951, 0}};

typedef struct {
    int32_t a[4];
    int32_t b[4];
    int32_t expect[4];
} test_mm_and_si128_data_model;
static test_mm_and_si128_data_model g_test_mm_and_si128_data = {
    {-1090234978, 256672469, -262740460, -658469076},
    {-2110085158, -378158308, -728891574, 1196371477},
    {-2113927782, 155484692, -804985344, 1077939716}};

typedef struct {
    int32_t a[8];
    int32_t b[8];
    int32_t expect[8];
} test_mm256_and_si256_data_model;
static test_mm256_and_si256_data_model g_test_mm256_and_si256_data = {
    {-1090234978, 256672469, -262740460, -658469076, 1707334408, 1217110378, -867381929, 538330263},
    {-2110085158, -378158308, -728891574, 1196371477, 2038502595, 1882035512, 989786232, -1445777675},
    {-2113927782, 155484692, -804985344, 1077939716, 1635848192, 1074364712, 139247696, 538051733}};

typedef struct {
    int32_t a[16];
    int32_t b[16];
    int32_t expect[16];
} test_mm512_and_si512_data_model;
static test_mm512_and_si512_data_model g_test_mm512_and_si512_data = {
    {-1090234978, 256672469, -262740460, -658469076, 1707334408, 1217110378, -867381929, 538330263, -1408379185,
     1648597848, -1670083078, 1219322582, 1967517156, 6047237, 313749857, 238532855},
    {-2110085158, -378158308, -728891574, 1196371477, 2038502595, 1882035512, 989786232, -1445777675, 1270439539,
     941191503, 22951105, 2076498209, 271495372, 1471447272, 940238827, 879641860},
    {-2113927782, 155484692, -804985344, 1077939716, 1635848192, 1074364712, 139247696, 538051733, 134829635, 536940872,
     5506240, 1216626688, 268738756, 1310720, 268591457, 69599236}};

typedef struct {
    int32_t a[4];
    int32_t b[4];
    int32_t expect[4];
} test_mm_or_si128_data_model;
static test_mm_or_si128_data_model g_test_mm_or_si128_data = {
    {-1090234978, 256672469, -262740460, -658469076},
    {-2110085158, -378158308, -728891574, 1196371477},
    {-1086392354, -276970531, -186646690, -540037315}};

typedef struct {
    int32_t a[8];
    int32_t b[8];
    int32_t expect[8];
} test_mm256_or_si256_data_model;
static test_mm256_or_si256_data_model g_test_mm256_or_si256_data = {
    {-1090234978, 256672469, -262740460, -658469076, 1707334408, 1217110378, -867381929, 538330263},
    {-2110085158, -378158308, -728891574, 1196371477, 2038502595, 1882035512, 989786232, -1445777675},
    {-1086392354, -276970531, -186646690, -540037315, 2109988811, 2024781178, -16843393, -1445499145},
};

typedef struct {
    int32_t a[16];
    int32_t b[16];
    int32_t expect[16];
} test_mm512_or_si512_data_model;
static test_mm512_or_si512_data_model g_test_mm512_or_si512_data = {
    {-1090234978, 256672469, -262740460, -658469076, 1707334408, 1217110378, -867381929, 538330263, -1408379185,
     1648597848, -1670083078, 1219322582, 1967517156, 6047237, 313749857, 238532855},
    {-2110085158, -378158308, -728891574, 1196371477, 2038502595, 1882035512, 989786232, -1445777675, 1270439539,
     941191503, 22951105, 2076498209, 271495372, 1471447272, 940238827, 879641860},
    {-1086392354, -276970531, -186646690, -540037315, 2109988811, 2024781178, -16843393, -1445499145, -272769281,
     2052848479, -1652638213, 2079194103, 1970273772, 1476183789, 985397227, 1048575479}};

typedef struct {
    int32_t a[4];
    int32_t b[4];
    int32_t expect[4];
} test_mm_andnot_si128_data_model;
static test_mm_andnot_si128_data_model g_test_mm_andnot_si128_data = {
    {-1090234978, 256672469, -262740460, -658469076},
    {-2110085158, -378158308, -728891574, 1196371477},
    {3842624, -533643000, 76093770, 118431761}};

typedef struct {
    int32_t a[8];
    int32_t b[8];
    int32_t expect[8];
} test_mm256_andnot_si256_data_model;
static test_mm256_andnot_si256_data_model g_test_mm256_andnot_si256_data = {
    {-1090234978, 256672469, -262740460, -658469076, 1707334408, 1217110378, -867381929, 538330263},
    {-2110085158, -378158308, -728891574, 1196371477, 2038502595, 1882035512, 989786232, -1445777675},
    {3842624, -533643000, 76093770, 118431761, 402654403, 807670800, 850538536, -1983829408}};

typedef struct {
    int32_t a[16];
    int32_t b[16];
    int32_t expect[16];
} test_mm512_andnot_si512_data_model;
static test_mm512_andnot_si512_data_model g_test_mm512_andnot_si512_data = {
    {-1090234978, 256672469, -262740460, -658469076, 1707334408, 1217110378, -867381929, 538330263, -1408379185,
     1648597848, -1670083078, 1219322582, 1967517156, 6047237, 313749857, 238532855},
    {-2110085158, -378158308, -728891574, 1196371477, 2038502595, 1882035512, 989786232, -1445777675, 1270439539,
     941191503, 22951105, 2076498209, 271495372, 1471447272, 940238827, 879641860},
    {3842624, -533643000, 76093770, 118431761, 402654403, 807670800, 850538536, -1983829408, 1135609904, 404250631,
     17444865, 859871521, 2756616, 1470136552, 671647370, 810042624}};

typedef struct {
    int32_t a[4];
    int32_t b[4];
    int32_t expect[4];
} test_mm_xor_si128_data_model;
static test_mm_xor_si128_data_model g_test_mm_xor_si128_data = {
    {-1090234978, 256672469, -262740460, -658469076},
    {-2110085158, -378158308, -728891574, 1196371477},
    {1027535428, -432455223, 618338654, -1617977031}};

typedef struct {
    int32_t a[8];
    int32_t b[8];
    int32_t expect[8];
} test_mm256_xor_si256_data_model;
static test_mm256_xor_si256_data_model g_test_mm256_xor_si256_data = {
    {-1090234978, 256672469, -262740460, -658469076, 1707334408, 1217110378, -867381929, 538330263},
    {-2110085158, -378158308, -728891574, 1196371477, 2038502595, 1882035512, 989786232, -1445777675},
    {1027535428, -432455223, 618338654, -1617977031, 474140619, 950416466, -156091089, -1983550878}};

typedef struct {
    int32_t a[16];
    int32_t b[16];
    int32_t expect[16];
} test_mm512_xor_si512_data_model;
static test_mm512_xor_si512_data_model g_test_mm512_xor_si512_data = {
    {-1090234978, 256672469, -262740460, -658469076, 1707334408, 1217110378, -867381929, 538330263, -1408379185,
     1648597848, -1670083078, 1219322582, 1967517156, 6047237, 313749857, 238532855},
    {-2110085158, -378158308, -728891574, 1196371477, 2038502595, 1882035512, 989786232, -1445777675, 1270439539,
     941191503, 22951105, 2076498209, 271495372, 1471447272, 940238827, 879641860},
    {1027535428, -432455223, 618338654, -1617977031, 474140619, 950416466, -156091089, -1983550878, -407598916,
     1515907607, -1658144453, 862567415, 1701535016, 1474873069, 716805770, 978976243}};

typedef struct {
    uint32_t a[8];
    uint32_t b[8];
    uint32_t expect[8];
} test_mm256_or_ps_data_model;
static test_mm256_or_ps_data_model g_test_mm256_or_ps_data = {
    {0xbf601831, 0xbf680b7a, 0x3f35eacf, 0xbe80965d, 0x3ce2e6f0, 0x3f6bcfbc, 0xbf59f945, 0xbf0fee59},
    {0xbf40bf7f, 0xbdbba322, 0x3f4fdfcc, 0xbf67bf79, 0x3e9c4cd3, 0x3f2efec2, 0xbef6d79c, 0xbf168421},
    {0xbf60bf7f, 0xbffbab7a, 0x3f7fffcf, 0xbfe7bf7d, 0x3efeeef3, 0x3f6ffffe, 0xbfffffdd, 0xbf1fee79}};

typedef struct {
    uint64_t a[4];
    uint64_t b[4];
    uint64_t expect[4];
} test_mm256_or_pd_data_model;
static test_mm256_or_pd_data_model g_test_mm256_or_pd_data = {
    {0xbfe0dd0413aa2020, 0xbfb9cf2e3e2a2300, 0xbfe20b2c4e51a2a0, 0xbfc1450d464b2b80},
    {0xbfb06dc4ae637800, 0xbfdf52af25d8bc80, 0xbfe3bba35c5dff80, 0x3fbc54a7222d1600},
    {0xbff0fdc4bfeb7820, 0xbfffdfaf3ffabf80, 0xbfe3bbaf5e5dffa0, 0xbffd55af666f3f80}};

typedef struct {
    int32_t a[16];
    int32_t b[16];
    int32_t expect[16];
} test_mm512_and_epi32_data_model;
static test_mm512_and_epi32_data_model g_test_mm512_and_epi32_data = {
    {-1090234978, 256672469, -262740460, -658469076, 1707334408, 1217110378, -867381929, 538330263, -1408379185,
     1648597848, -1670083078, 1219322582, 1967517156, 6047237, 313749857, 238532855},
    {-2110085158, -378158308, -728891574, 1196371477, 2038502595, 1882035512, 989786232, -1445777675, 1270439539,
     941191503, 22951105, 2076498209, 271495372, 1471447272, 940238827, 879641860},
    {-2113927782, 155484692, -804985344, 1077939716, 1635848192, 1074364712, 139247696, 538051733, 134829635, 536940872,
     5506240, 1216626688, 268738756, 1310720, 268591457, 69599236}};

typedef struct {
    int64_t a[8];
    int64_t b[8];
    int64_t expect[8];
} test_mm512_and_epi64_data_model;
static test_mm512_and_epi64_data_model g_test_mm512_and_epi64_data = {
    {1878421480, 1727611854, -1472180838, 1723835162, 167794177, 1854741464, 725992112, 1995068600},
    {-1292353920, -1179017088, 641699542, 1841719168, 749458416, -84593152, 729036003, 611309623},
    {586165888, 548995200, 536874130, 1686512384, 134238720, 1787105792, 725876896, 610947120}};

typedef struct {
    int32_t a[16];
    int32_t b[16];
    int32_t expect[16];
} test_mm512_or_epi32_data_model;
static test_mm512_or_epi32_data_model g_test_mm512_or_epi32_data = {
    {-1090234978, 256672469, -262740460, -658469076, 1707334408, 1217110378, -867381929, 538330263, -1408379185,
     1648597848, -1670083078, 1219322582, 1967517156, 6047237, 313749857, 238532855},
    {-2110085158, -378158308, -728891574, 1196371477, 2038502595, 1882035512, 989786232, -1445777675, 1270439539,
     941191503, 22951105, 2076498209, 271495372, 1471447272, 940238827, 879641860},
    {-1086392354, -276970531, -186646690, -540037315, 2109988811, 2024781178, -16843393, -1445499145, -272769281,
     2052848479, -1652638213, 2079194103, 1970273772, 1476183789, 985397227, 1048575479}};

typedef struct {
    int64_t a[8];
    int64_t b[8];
    int64_t expect[8];
} test_mm512_or_epi64_data_model;
static test_mm512_or_epi64_data_model g_test_mm512_or_epi64_data = {
    {-879237352, 558970432, 1710307724, 1923286300, 1125580396, 1898572736, -2042668115, -1960797766},
    {574262164, 2123305894, -650130336, -395257666, 451452356, -622573152, -1741286838, 837851923},
    {-339742820, 2145335270, -33554964, -84681282, 1543438316, -68293664, -1640014865, -1141859397}};

typedef struct {
    uint32_t a[16];
    uint32_t b[16];
    uint32_t expect[16];
} test_mm512_xor_ps_data_model;
static test_mm512_xor_ps_data_model g_test_mm512_xor_ps_data = {
    {0x3f04dfd0, 0xbf0ca03a, 0x3e99dfff, 0xbe9fa46d, 0xbf5a4956, 0x3f130dc8, 0x3eeac2da, 0x3dcdbf27, 0x3f7a7645,
     0xbf7358f6, 0x3ec4ffa2, 0x3f4dc74f, 0x3ec585cf, 0xbf552561, 0x3e56d871, 0xbe47a1a3},
    {0x3efa8f95, 0x3d6d025d, 0x3f5e91a7, 0xbf39ba47, 0xbcd27fd1, 0x3ef88953, 0x3ef93c14, 0x3ee5ebda, 0x3f5f188e,
     0x3e7b90ad, 0xbeeeb782, 0x3e1349c5, 0xbf61015f, 0xbf1c4a25, 0xbf4ed9fc, 0x3efdb202},
    {0x1fe5045, 0x8261a267, 0x1c74e58, 0x1a61e2a, 0x3883687, 0x1eb849b, 0x13fece, 0x32854fd, 0x256ecb, 0x8108c85b,
     0x802a4820, 0x15e8e8a, 0x81a48490, 0x496f44, 0x8118018d, 0x80ba13a1}};

typedef struct {
    uint64_t a[8];
    uint64_t b[8];
    uint64_t expect[8];
} test_mm512_xor_pd_data_model;
static test_mm512_xor_pd_data_model g_test_mm512_xor_pd_data = {
    {0x3fdd199ba8144040, 0xbfe9d9296f254460, 0x3f819d6d2c68a800, 0x3fdac8bc1de595c0, 0x3fed2cedb73ecd20,
     0xbfc68a0a3a08e580, 0x3fb0b2e89b20fd00, 0x3fb2b64df8507f00},
    {0x3fc707d6fab1bc00, 0x3fd79c0c2d98bc80, 0xbfe88c5e333dff80, 0xbfd50f378c4b4580, 0xbfe119404b881800,
     0x3fb7526e8bf57a00, 0x3fdcedce3b167100, 0x3fe15bf4440c03c0},
    {0x1a1e4d52a5fc40, 0x803e452542bdf8e0, 0x806911331f555780, 0x800fc78b91aed040, 0x800c35adfcb6d520, 
     0x8071d864b1fd9f80, 0x6c5f26a0368c00, 0x53edb9bc5c7cc0}};

typedef struct {
    int8_t a[32];
    int8_t b[32];
    uint8_t expect[32];
} test_mm256_cmpeq_epi8_data_model;
static test_mm256_cmpeq_epi8_data_model g_test_mm256_cmpeq_epi8_data = {
    {-128, -31, -30, -29, -16, -15, -10, -9, -8, -7,  -6,  -5,  -4,  -3,  -2,  -1,
     0,    1,   2,   3,   15,  16,  17,  32, 48, 120, 121, 122, 123, 124, 125, 127},
    {-128, -31, 1, 34, 12, -33, -10, -9,  7,  4,  127, 11,   23,   111, -2, -1,
     0,    1,   1, 90, 90, 22,  23,  -54, 10, 48, 120, -121, -120, 77,  22, 127},
    {255, 255, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255}};

typedef struct {
    int32_t a[8];
    int32_t b[8];
    uint32_t expect[8];
} test_mm256_cmpeq_epi32_data_model;
static test_mm256_cmpeq_epi32_data_model g_test_mm256_cmpeq_epi32_data = {
    {2147483647, -2, 48792, 789, 74185, 32, 0, 23},
    {2147483647, 2, 48792, 1236589, -7895, 32, 15, 23},
    {4294967295, 0, 4294967295, 0, 0, 4294967295, 0, 4294967295}};

typedef struct {
    int32_t a[8];
    int32_t b[8];
    uint32_t expect[8];
} test_mm256_cmpgt_epi32_data_model;
static test_mm256_cmpgt_epi32_data_model g_test_mm256_cmpgt_epi32_data = {
    {2147483647, -2, 589, 789, 74185, 2, 0, 23},
    {12, 2, 12, 568, -7895, 32, 15, 23},
    {4294967295, 0, 4294967295, 4294967295, 4294967295, 0, 0, 0}};

typedef struct {
    int8_t a[16];
    int8_t b[16];
    uint8_t expect[16];
} test_mm_cmpeq_epi8_data_model;
static test_mm_cmpeq_epi8_data_model g_test_mm_cmpeq_epi8_data = {
    {-128, -31, -30, -29, -16, -15, -10, -9, -8, -7,  -6,  -5,  -4,  -3,  -2,  -1},
    {-128, -31, 1, 34, 12, -33, -10, -9,  7,  4,  127, 11,   23,   111, -2, -1},
    {255, 255, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255}};

typedef struct {
    int32_t a[4];
    int32_t b[4];
    uint32_t expect[4];
} test_mm_cmpeq_epi32_data_model;
static test_mm_cmpeq_epi32_data_model g_test_mm_cmpeq_epi32_data = {
    {2147483647, -2, 48792, 789},
    {2147483647, 2, 48792, 1236589},
    {4294967295, 0, 4294967295, 0}};

typedef struct {
    int64_t a[2];
    int64_t b[2];
    uint64_t expect[2];
} test_mm_cmpeq_epi64_data_model;
static test_mm_cmpeq_epi64_data_model g_test_mm_cmpeq_epi64_data = {{6, 7}, {60, -9}, {0, 0}};

typedef struct {
    int32_t a[16];
    int32_t b[16];
    __mmask16 expect[8];
} test_mm512_cmp_epi32_mask_data_model;
static test_mm512_cmp_epi32_mask_data_model g_test_mm512_cmp_epi32_mask_data = {
    {1, 12, 18, -3, 45, 100, -20, -100, 5, 2, 67, -9, 24, 90, 55, 0},
    {1, 13, 10, -4, 45, 90, -202, 23, 105, 0, 67, -8, 24, 89, 53, 1},
    {5137, 35202, 40339, 0, 60398, 30333, 25196, 65535}};

typedef struct {
    int8_t a[64];
    int8_t b[64];
    __mmask64 expect[8];
} test_mm512_cmp_epi8_mask_data_model;
static test_mm512_cmp_epi8_mask_data_model g_test_mm512_cmp_epi8_mask_data = {
    {-94, -95, -110, -22,  -37, 120, 91,  93,   -74,  123, 19,  -9, -50, -101, 50,  99,   -50,  82,  22,   0,  57,  -11,
     116, 111, -102, -105, 93,  96,  -75, 36,   -101, 1,   99,  0,  -65, 68,   -4,  -108, 1,    -93, 67,   1,  -97, 62,
     21,  97,  -112, -12,  -68, 18,  -71, -117, -113, 7,   -97, 0,  -1,  -118, 105, 91,   -123, -66, -101, -64},
    {23,  25,  -61, 113, -122, 66,  -24,  -117, -19,  16,  -8,   66,   -50,  -92, -81, 58,
     -91, -14, 121, 101, -60,  -60, -122, 111,  5,    75,  -102, -125, -6,   110, 18,  40,
     59,  0,   66,  10,  -21,  6,   63,   -124, -101, -1,  100,  -71,  -65,  -26, 108, 94,
     -2,  89,  106, -23, -100, 18,  -116, 57,   -39,  -33, 1,    107,  -123, 54,  70,  -17},
    {1152921513205174272ULL, 16915454663280306447ULL, 18068376176485480719ULL, 0, 17293822560504377343ULL,
     1531289410429245168ULL, 378367897224070896ULL, 18446744073709551615ULL}};

typedef struct {
    int8_t a[64];
    int8_t b[64];
    __mmask64 expect;
} test_mm512_cmpeq_epi8_mask_data_model;
static test_mm512_cmpeq_epi8_mask_data_model g_test_mm512_cmpeq_epi8_mask_data = {
    {-94, -95, -110, -22,  -37, 120, 91,  93,   -74,  123, 19,  -9, -50, -101, 50,  99,   -50,  82,  22,   0,  57,  -11,
     116, 111, -102, -105, 93,  96,  -75, 36,   -101, 1,   99,  0,  -65, 68,   -4,  -108, 1,    -93, 67,   1,  -97, 62,
     21,  97,  -112, -12,  -68, 18,  -71, -117, -113, 7,   -97, 0,  -1,  -118, 105, 91,   -123, -66, -101, -64},
    {23,  25,  -61, 113, -122, 66,  -24,  -117, -19,  16,  -8,   66,   -50,  -92, -81, 58,
     -91, -14, 121, 101, -60,  -60, -122, 111,  5,    75,  -102, -125, -6,   110, 18,  40,
     59,  0,   66,  10,  -21,  6,   63,   -124, -101, -1,  100,  -71,  -65,  -26, 108, 94,
     -2,  89,  106, -23, -100, 18,  -116, 57,   -39,  -33, 1,    107,  -123, 54,  70,  -17},
    1152921513205174272};

typedef struct {
    int32_t a[16];
    int32_t b[16];
    __mmask16 expect;
} test_mm512_cmpgt_epi32_mask_data_model;
static test_mm512_cmpgt_epi32_mask_data_model g_test_mm512_cmpgt_epi32_mask_data = {
    {-94, -95, -110, -22,  -37, 120, 91,  93,   -74,  123, 19,  -9, -50, -101, 50,  99},
    {23,  25,  -61, 113, -122, 66,  -24,  -117, -19,  16,  -8,   66,   -50,  -92, -81, 58},
    50928};

typedef struct {
    int8_t a[64];
    int8_t b[64];
    __mmask64 k1;
    __mmask64 expect;
} test_mm512_mask_cmpeq_epi8_mask_data_model;
static test_mm512_mask_cmpeq_epi8_mask_data_model g_test_mm512_mask_cmpeq_epi8_mask_data = {
    {-94, -95, -110, -22,  -37, 120, 91,  93,   -74,  123, 19,  -9, -50, -101, 50,  99,   -50,  82,  22,   0,  57,  -11,
     116, 111, -102, -105, 93,  96,  -75, 36,   -101, 1,   99,  0,  -65, 68,   -4,  -108, 1,    -93, 67,   1,  -97, 62,
     21,  97,  -112, -12,  -68, 18,  -71, -117, -113, 7,   -97, 0,  -1,  -118, 105, 91,   -123, -66, -101, -64},
    {23,  25,  -61, 113, -122, 66,  -24,  -117, -19,  16,  -8,   66,   -50,  -92, -81, 58,
     -91, -14, 121, 101, -60,  -60, -122, 111,  5,    75,  -102, -125, -6,   110, 18,  40,
     59,  0,   66,  10,  -21,  6,   63,   -124, -101, -1,  100,  -71,  -65,  -26, 108, 94,
     -2,  89,  106, -23, -100, 18,  -116, 57,   -39,  -33, 1,    107,  -123, 54,  70,  -17},
    2120728348,
    4096};

typedef struct {
    int32_t a[16];
    int32_t expect[16];
} test_mm512_set_epi32_data_model;
static test_mm512_set_epi32_data_model g_test_mm512_set_epi32_data = {
    {-1090234978, 256672469, -262740460, -658469076, 1707334408, 1217110378, -867381929, 538330263, -1408379185,
     1648597848, -1670083078, 1219322582, 1967517156, 6047237, 313749857, 238532855},
    {-1090234978, 256672469, -262740460, -658469076, 1707334408, 1217110378, -867381929, 538330263, -1408379185,
     1648597848, -1670083078, 1219322582, 1967517156, 6047237, 313749857, 238532855}};

typedef struct {
    int64_t a[8];
    int64_t expect[8];
} test_mm512_set_epi64_data_model;
static test_mm512_set_epi64_data_model g_test_mm512_set_epi64_data = {
    {-9223372036854775805, 9223372036854775804, -274877871, -2654305, -2431275156, -3845487, 1587196, 2390272},
    {-9223372036854775805, 9223372036854775804, -274877871, -2654305, -2431275156, -3845487, 1587196, 2390272}};

typedef struct {
    int32_t a;
    int32_t expect[16];
} test_mm512_set1_epi32_data_model;
static test_mm512_set1_epi32_data_model g_test_mm512_set1_epi32_data = {
    -1090234978,
    {-1090234978, -1090234978, -1090234978, -1090234978, -1090234978, -1090234978, -1090234978, -1090234978,
     -1090234978, -1090234978, -1090234978, -1090234978, -1090234978, -1090234978, -1090234978, -1090234978}};

typedef struct {
    int64_t a;
    int64_t expect[8];
} test_mm512_set1_epi64_data_model;
static test_mm512_set1_epi64_data_model g_test_mm512_set1_epi64_data = {
    -9223372036854775805,
    {-9223372036854775805, -9223372036854775805, -9223372036854775805, -9223372036854775805, -9223372036854775805,
     -9223372036854775805, -9223372036854775805, -9223372036854775805}};

typedef struct {
    char a;
    int8_t expect[64];
} test_mm512_set1_epi8_data_model;
static test_mm512_set1_epi8_data_model g_test_mm512_set1_epi8_data = {
    (char)-43,
    {-43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
     -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
     -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43}};

typedef struct {
    float32_t a[16];
    float32_t expect[16];
} test_mm512_set_ps_data_model;
static test_mm512_set_ps_data_model g_test_mm512_set_ps_data = {
    {1.550000, 127.245003, 8.000000, -9.562000, -100.000000, -128.845703, 1045481.000000, 7.125480, 16.145000,
     20.000999, 58.698002, 57.146999, 67.156998, 30.124500, 40.658001, 14.650000},
    {1.550000, 127.245003, 8.000000, -9.562000, -100.000000, -128.845703, 1045481.000000, 7.125480, 16.145000,
     20.000999, 58.698002, 57.146999, 67.156998, 30.124500, 40.658001, 14.650000}};

typedef struct {
    float64_t a[8];
    float64_t expect[8];
} test_mm512_set_pd_data_model;
static test_mm512_set_pd_data_model g_test_mm512_set_pd_data = {
    {895828870.5853160620, 13198299.6345069464, -46353094.4883757681, 1008132723.0642696619, 1132533339.7273423672,
     190439947.2382000089, -1511701151.4810729027, 446683041.9176963568},
    {895828870.5853160620, 13198299.6345069464, -46353094.4883757681, 1008132723.0642696619, 1132533339.7273423672,
     190439947.2382000089, -1511701151.4810729027, 446683041.9176963568}};

typedef struct {
    float32_t a;
    float32_t expect[16];
} test_mm512_set1_ps_data_model;
static test_mm512_set1_ps_data_model g_test_mm512_set1_ps_data = {
    58.698002,
    {58.698002, 58.698002, 58.698002, 58.698002, 58.698002, 58.698002, 58.698002, 58.698002, 58.698002, 58.698002,
     58.698002, 58.698002, 58.698002, 58.698002, 58.698002, 58.698002}};

typedef struct {
    float64_t a;
    float64_t expect[8];
} test_mm512_set1_pd_data_model;
static test_mm512_set1_pd_data_model g_test_mm512_set1_pd_data = {
    -1511701151.4810729027,
    {-1511701151.4810729027, -1511701151.4810729027, -1511701151.4810729027, -1511701151.4810729027,
     -1511701151.4810729027, -1511701151.4810729027, -1511701151.4810729027, -1511701151.4810729027}};

typedef struct {
    float32_t expect[16];
} test_mm512_setzero_ps_data_model;
static test_mm512_setzero_ps_data_model g_test_mm512_setzero_ps_data = {
    {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}};

typedef struct {
    float64_t expect[8];
} test_mm512_setzero_pd_data_model;
static test_mm512_setzero_pd_data_model g_test_mm512_setzero_pd_data = {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}};

typedef struct {
    float32_t a[4];
    float32_t b[4];
    float32_t expect[4];
} test_mm_move_ss_data_model;
static test_mm_move_ss_data_model g_test_mm_move_ss_data = {
    {1.0, 1.0, 1.0, 1.0}, {2.0, 2.0, 2.0, 2.0}, {2.0, 1.0, 1.0, 1.0}};

typedef struct {
    float64_t a[2];
    float64_t b[2];
    float64_t expect[2];
} test_mm_move_sd_data_model;
static test_mm_move_sd_data_model g_test_mm_move_sd_data = {{1.0, 1.0}, {2.0, 2.0}, {2.0, 1.0}};

typedef struct {
    int8_t a[16];
    int expect;
} test_mm_movemask_epi8_data_model;
static test_mm_movemask_epi8_data_model g_test_mm_movemask_epi8_data = {
    {-2, 30, 127, 100, 4,   8, 10, -43, -56, 102, 120, 70, 45, -12, 20, 27},
    (int)0x00002181};

typedef struct {
    float32_t a[4];
    int expect;
} test_mm_movemask_ps_data_model;
static test_mm_movemask_ps_data_model g_test_mm_movemask_ps_data = {
    {1.500000, 127.199997, 8.000000, -9.562000}, 0x00000008};

typedef struct {
    int8_t a[32];
    int expect;
} test_mm256_movemask_epi8_data_model;
static test_mm256_movemask_epi8_data_model g_test_mm256_movemask_epi8_data = {
    {-2, 30, 127, 100, 4,   8, 10, -43, -56, 102, 120, 70, 45, -12, 20, 27,
     1,  -4, 18,  50,  -49, 7, 0,  80,  8,   6,   -7,  15, 0,  9,   11, -6},
    (int)0x84122181};

typedef struct {
    float32_t a[8];
    int expect;
} test_mm256_movemask_ps_data_model;
static test_mm256_movemask_ps_data_model g_test_mm256_movemask_ps_data = {
    {1.500000, 127.199997, 8.000000, -9.562000, -100.000000, -128.845703, 1045481.000000, 7.125480}, 0x00000038};

typedef struct {
    int8_t a[16];
    int8_t b[16];
    int expect;
} test_mm_testz_si128_data_model;
static test_mm_testz_si128_data_model g_test_mm_testz_si128_data = {
    {-2, 30, 127, 100, 4, 8, 10, -43, -56, 102, 120, 70, 45, -12, 20, 27},
    {1, -31, -128, -101, -5, -9, -11, 42, 55, -103, -121, -71, -46, 11, -21, -28},
    1};

typedef struct {
    int8_t a[32];
    int8_t b[32];
    int8_t expect;
} test_mm256_testz_si256_data_model;
static test_mm256_testz_si256_data_model g_test_mm256_testz_si256_data = {
    {107, -45, 58, -11, 46, 84,  2,  91, 38,   -92, 6,  -5,  -33, 14, -96,  -19,
     90,  5,   52, 45,  70, -44, 45, 24, -109, 30,  44, 108, -17, 22, -122, 27},
    {-108, 44, -59, 10,  -47, -85, -3,  -92, -39, 91,  -7,  4,    32, -15, 95,  18,
     -91,  -6, -53, -46, -71, 43,  -46, -25, 108, -31, -45, -109, 16, -23, 121, -28},
    1};

typedef struct {
    unsigned long long a;
    int8_t expect[64];
} test_mm512_movm_epi8_data_model;
static test_mm512_movm_epi8_data_model g_test_mm512_movm_epi8_data = {
    0x123456789ABCDEF0, {0,  0,  0,  0,  -1, -1, -1, -1, 0,  -1, -1, -1, -1, 0,  -1, -1, 0,  0, -1, -1, -1, -1,
                         0,  -1, 0,  -1, 0,  -1, -1, 0,  0,  -1, 0,  0,  0,  -1, -1, -1, -1, 0, 0,  -1, -1, 0,
                         -1, 0,  -1, 0,  0,  0,  -1, 0,  -1, -1, 0,  0,  0,  -1, 0,  0,  -1, 0, 0,  0}};

typedef struct {
    unsigned short a;
    int32_t expect[16];
} test_mm512_movm_epi32_data_model;
static test_mm512_movm_epi32_data_model g_test_mm512_movm_epi32_data = {
    0x1234, {0, 0, -1, 0, -1, -1, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0}};

typedef struct {
    int32_t a[4];
    const int b;
    int32_t expect;
} test_mm_extract_epi32_data_model;
static test_mm_extract_epi32_data_model g_test_mm_extract_epi32_data = {{13, 25, 31, 47}, 3, 47};

typedef struct {
    int64_t a[2];
    const int b;
    int64_t expect;
} test_mm_extract_epi64_data_model;
static test_mm_extract_epi64_data_model g_test_mm_extract_epi64_data = {
    {6776653639822200585, 1668641392784102205}, 0, 6776653639822200585};

typedef struct {
    int64_t a[4];
    const int b;
    int64_t expect[2];
} test_mm256_extracti128_si256_data_model;
static test_mm256_extracti128_si256_data_model g_test_mm256_extracti128_si256_data = {
    {-15, 978, 16, 654}, 1, {16, 654}};

typedef struct {
    float32_t a[4];
    const int b;
    int expect;
} test_mm_extract_ps_data_model;
static test_mm_extract_ps_data_model g_test_mm_extract_ps_data = {{1.0, 2.0, 3.0, 4.0}, 3, 1082130432};

typedef struct {
    int32_t a[8];
    const int b;
    int expect;
} test_mm256_extract_epi32_data_model;
static test_mm256_extract_epi32_data_model g_test_mm256_extract_epi32_data = {{1, 2, 3, 4, 5, 6, 7, 8}, 3, 4};

typedef struct {
    int64_t a[4];
    const int b;
    int64_t expect;
} test_mm256_extract_epi64_data_model;
static test_mm256_extract_epi64_data_model g_test_mm256_extract_epi64_data = {{1, 2, 3, 4}, 2, 3};

typedef struct {
    float32_t a[8];
    const int b;
    float32_t expect[4];
} test_mm256_extractf128_ps_data_model;
static test_mm256_extractf128_ps_data_model g_test_mm256_extractf128_ps_data = {
    {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}, 1, {5.0, 6.0, 7.0, 8.0}};

typedef struct {
    float64_t a[4];
    const int b;
    float64_t expect[2];
} test_mm256_extractf128_pd_data_model;
static test_mm256_extractf128_pd_data_model g_test_mm256_extractf128_pd_data = {{1.0, 2.0, 3.0, 4.0}, 1, {3.0, 4.0}};

typedef struct {
    float32_t a[16];
    const int b;
    float32_t expect[8];
} test_mm512_extractf32x8_ps_data_model;
static test_mm512_extractf32x8_ps_data_model g_test_mm512_extractf32x8_ps_data = {
    {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, -1.0, -2.0, -3.0, -4.0, -5.0, -6.0, -7.0, -8.0},
    1,
    {-1.0, -2.0, -3.0, -4.0, -5.0, -6.0, -7.0, -8.0}};

typedef struct {
    float64_t a[8];
    const int b;
    float64_t expect[4];
} test_mm512_extractf64x4_pd_data_model;
static test_mm512_extractf64x4_pd_data_model g_test_mm512_extractf64x4_pd_data = {
    {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}, 1, {5.0, 6.0, 7.0, 8.0}};

typedef struct {
    unsigned int crc;
    unsigned char v;
    unsigned int expect;
} test_mm_crc32_u8_data_model;
static test_mm_crc32_u8_data_model g_test_mm_crc32_u8_data = {4153545204, 155, 1059208535};

typedef struct {
    unsigned int crc;
    unsigned short v;
    unsigned int expect;
} test_mm_crc32_u16_data_model;
static test_mm_crc32_u16_data_model g_test_mm_crc32_u16_data = {3730857934, 26977, 1970496319};

typedef struct {
    unsigned int crc;
    unsigned int v;
    unsigned int expect;
} test_mm_crc32_u32_data_model;
static test_mm_crc32_u32_data_model g_test_mm_crc32_u32_data = {4195592487, 4146244042, 2462366937

};

typedef struct {
    unsigned long crc;
    unsigned long v;
    unsigned long expect;
} test_mm_crc32_u64_data_model;
static test_mm_crc32_u64_data_model g_test_mm_crc32_u64_data = {4257207552971783972, 4094426903918957320, 3846645531};

typedef struct {
    int8_t a[16];
    int8_t b[16];
    int8_t expect[16];
} test_mm_shuffle_epi8_data_model;
static test_mm_shuffle_epi8_data_model g_test_mm_shuffle_epi8_data = {
    {-111, 14, 91, 125, -59,  66, 97,  -83, 21, 62, 42,  -41, -37,  26, 63,   -1},
    {111, -60, 20, -117, -77, -122, -80, -75, 65,  -19, -44, 20, 88,  21,  106, 1},
    {-1, 0, -59, 0, 0, 0, 0, 0, 14, 0, 0, -59, 21, 66, 42, 14}};

typedef struct {
    int8_t a[32];
    int8_t b[32];
    int8_t expect[32];
} test_mm256_shuffle_epi8_data_model;
static test_mm256_shuffle_epi8_data_model g_test_mm256_shuffle_epi8_data = {
    {-111, 14, 91, 125, -59,  66, 97,  -83, 21, 62, 42,  -41, -37,  26, 63,   -1,
     38,   66, -9, -2,  -109, 9,  -81, -92, 19, 87, -16, -61, -108, 73, -120, -109},
    {111, -60, 20, -117, -77, -122, -80, -75, 65,  -19, -44, 20, 88,  21,  106, 1,
     -70, -48, 66, 59,   42,  -128, -61, -85, 108, 58,  124, 72, -89, -91, -40, 100},
    {-1, 0, -59, 0,   0,   0, 0, 0, 14,   0,   0,    -59, 21, 66, 42, 14,
     0,  0, -9,  -61, -16, 0, 0, 0, -108, -16, -108, 19,  0,  0,  0,  -109}};

typedef struct {
    int8_t a[64];
    int8_t b[64];
    int8_t expect[64];
} test_mm512_shuffle_epi8_data_model;
static test_mm512_shuffle_epi8_data_model g_test_mm512_shuffle_epi8_data = {
    {-29,  70,  -9,   -121, 47,  -52,  74,  -83, -97, 4,   122,  -42, -97,  34,  -66,  84,
     -43,  30,  64,   68,   64,  -54,  43,  -89, 44,  26,  -56,  -37, 71,   -97, -38,  -36,
     -105, -85, -68,  1,    -83, -58,  -77, 72,  -27, -41, -104, -53, -51,  32,  -108, 17,
     94,   -11, -103, 25,   30,  -111, 95,  -47, 83,  -88, -128, -21, -120, -81, -96,  22},
    {91,  -15, 82,  -86, -10,  -62, -32, -51, -106, -36,  26,  112, -121, -76, 21,  95,   108, 63,  50,  123, -121, -89,
     -56, -92, 113, -77, -128, 0,   94,  -89, 59,   48,   123, 16,  74,   -87, -84, -124, 50,  -91, -43, -26, -37,  -89,
     -57, 86,  -83, 113, 55,   11,  51,  99,  -75,  -107, -93, -15, -43,  89,  69,  -82,  -84, -85, 102, 81},
    {-42, 0,   -9, 0,   0,   0,   0,   0,  0,   0,   122, -29,  0,    0,   -52,  84, 71,  -36, 64, -37, 0, 0,
     0,   0,   30, 0,   0,   -43, -38, 0,  -37, -43, -53, -105, -104, 0,   0,    0,  -68, 0,   0,  0,   0, 0,
     0,   -77, 0,  -85, -47, -21, 25,  25, 0,   0,   0,   0,    0,    -88, -111, 0,  0,   0,   95, -11}};

typedef struct {
    int8_t a[64];
    int8_t b[64];
    unsigned long k;
    int8_t expect[64];
} test_mm512_maskz_shuffle_epi8_data_model;
static test_mm512_maskz_shuffle_epi8_data_model g_test_mm512_maskz_shuffle_epi8_data = {
    {-29,  70,  -9,   -121, 47,  -52,  74,  -83, -97, 4,   122,  -42, -97,  34,  -66,  84,
     -43,  30,  64,   68,   64,  -54,  43,  -89, 44,  26,  -56,  -37, 71,   -97, -38,  -36,
     -105, -85, -68,  1,    -83, -58,  -77, 72,  -27, -41, -104, -53, -51,  32,  -108, 17,
     94,   -11, -103, 25,   30,  -111, 95,  -47, 83,  -88, -128, -21, -120, -81, -96,  22},
    {91,  -15, 82,  -86, -10,  -62, -32, -51, -106, -36,  26,  112, -121, -76, 21,  95,   108, 63,  50,  123, -121, -89,
     -56, -92, 113, -77, -128, 0,   94,  -89, 59,   48,   123, 16,  74,   -87, -84, -124, 50,  -91, -43, -26, -37,  -89,
     -57, 86,  -83, 113, 55,   11,  51,  99,  -75,  -107, -93, -15, -43,  89,  69,  -82,  -84, -85, 102, 81},
    0x123456789ABCDEF,
    {-42, 0, -9, 0, 0,   0,   0, 0, 0, 0,   122, -29,  0,    0, -52, 84, 71,  -36, 0, -37, 0, 0,
     0,   0, 30, 0, 0,   -43, 0, 0, 0, -43, -53, -105, -104, 0, 0,   0,  -68, 0,   0, 0,   0, 0,
     0,   0, 0,  0, -47, -21, 0, 0, 0, 0,   0,   0,    0,    0, 0,   0,  0,   0,   0, 0}};

typedef struct {
    uint8_t a[32];
    uint8_t b[32];
    uint8_t expect[32];
} test_mm256_multishift_epi64_epi8_data_model;
static test_mm256_multishift_epi64_epi8_data_model g_test_mm256_multishift_epi64_epi8_data = {
    {21, 150, 198, 156, 122, 182, 234, 69, 123, 2, 66, 128, 182, 84, 184, 14, 243, 137, 0, 176, 235, 16, 87, 195, 1,
     136, 113, 107, 157, 191, 133, 34},
    {46, 188, 91, 246, 197, 149, 241, 238, 171, 181, 172, 40, 148, 152, 197, 205, 165, 186, 38, 122, 102, 213, 85, 211,
     197, 67, 8, 39, 191, 85, 205, 120},
    {178, 217, 240, 95, 187, 187, 101, 225, 121, 106, 106, 171, 55, 138, 205, 178, 106, 93, 165, 85, 186, 38, 244, 84,
     226, 67, 102, 170, 249, 138, 30, 111}};

typedef struct {
    uint8_t a[64];
    uint8_t b[64];
    uint8_t expect[64];
} test_mm512_multishift_epi64_epi8_data_model;
static test_mm512_multishift_epi64_epi8_data_model g_test_mm512_multishift_epi64_epi8_data = {
    {117, 16, 56, 169, 126, 165, 25, 50, 198, 169, 245, 191, 100, 211, 206, 22, 121, 2, 16, 36, 159, 107, 161, 194, 104,
     169, 165, 194, 191, 98, 152, 209, 159, 194, 127, 61, 177, 214, 70, 185, 3, 11, 204, 178, 98, 25, 141, 11, 189, 219,
     181, 90, 194, 184, 200, 183, 212, 117, 144, 44, 60, 237, 47, 246},
    {118, 191, 233, 115, 243, 221, 215, 10, 202, 66, 58, 101, 86, 89, 3, 67, 38, 177, 171, 142, 202, 184, 157, 103, 107,
     93, 105, 9, 149, 141, 120, 17, 211, 175, 231, 30, 169, 82, 152, 174, 99, 169, 205, 139, 21, 250, 234, 44, 206, 60,
     25, 102, 48, 8, 113, 204, 194, 160, 39, 242, 69, 202, 248, 236},
    {86, 233, 10, 238, 216, 239, 185, 181, 11, 172, 24, 148, 149, 167, 233, 148, 51, 73, 171, 140, 149, 183, 101, 73,
     141, 70, 108, 90, 214, 101, 9, 180, 82, 244, 167, 157, 76, 123, 191, 215, 44, 181, 218, 58, 133, 197, 109, 181,
     118, 12, 99, 25, 51, 204, 60, 152, 34, 103, 39, 140, 46, 198, 241, 179}};

typedef struct {
    int8_t a[32];
    int8_t b[32];
    int8_t expect[32];
} test_mm256_unpacklo_epi8_data_model;
static test_mm256_unpacklo_epi8_data_model g_test_mm256_unpacklo_epi8_data = {
    {-59,  -99, 96,   41,   74, 33,  -117, -24, 65, -4,  -28, -20,  28,  65, 91,  -66,
     -100, 87,  -100, -118, 59, -41, -71,  20,  -5, -52, 126, -113, 110, 53, -22, -10},
    {77, -61, -72, 31,  -39, -63, 77, -15,  72,  54, -119, 101,  84,   27, -23, 21,
     -2, 51,  49,  -18, -57, -47, 27, -109, -86, 39, -103, -121, -110, 14, 124, 50},
    {-59,  77, -99, -61, 96,   -72, 41,   31,  74, -39, 33,  -63, -117, 77, -24, -15,
     -100, -2, 87,  51,  -100, 49,  -118, -18, 59, -57, -41, -47, -71,  27, 20,  -109}};

typedef struct {
    int8_t a[32];
    int8_t b[32];
    int8_t expect[32];
} test_mm256_unpackhi_epi8_data_model;
static test_mm256_unpackhi_epi8_data_model g_test_mm256_unpackhi_epi8_data = {
    {-51, -23, 2,  -55, 96, -45,  17, 37,  84,  -116, -126, -62, -69, 9,   60,  40,
     99,  50,  80, 97,  4,  -109, 35, -87, -91, -99,  12,   55,  22,  123, -76, 87},
    {-66,  93,  103, 34,  105, 42,  81,  45, 46, -107, 114, -7,  31,  65, 23,  -9,
     -109, -10, 40,  123, -62, 120, -85, 65, 81, 91,   -90, -94, -75, 93, -20, 67},
    {84,  46, -116, -107, -126, 114, -62, -7,  -69, 31,  9,   65, 60,  23,  40, -9,
     -91, 81, -99,  91,   12,   -90, 55,  -94, 22,  -75, 123, 93, -76, -20, 87, 67}};

typedef struct {
    int8_t a[64];
    int8_t b[64];
    int8_t expect[64];
} test_mm512_unpacklo_epi8_data_model;
static test_mm512_unpacklo_epi8_data_model g_test_mm512_unpacklo_epi8_data = {
    {-3, 0,   93, 51,   -111, -78, -27, -94, -21,  10,  -88,  81,  -22, -95, -77, 27,   -63, 34,  105, 21, -77, -45,
     8,  -66, 88, -100, 51,   119, 65,  -55, 62,   114, -64,  -10, 101, 106, 125, 117,  63,  -21, -28, 46, -70, -31,
     11, 32,  41, 88,   52,   110, 109, 62,  -125, -38, -124, -76, 22,  -38, -56, -100, 64,  -55, 6,   81},
    {110,  107, -26, 76,  61,  -100, 28,  26,   7,    -57, 85,  111, -85, 113, -21,  67,  -99, 3,   -21, 78, 92, 3,
     -116, 43,  -70, -20, -58, 77,   -88, -43,  -122, 111, 92,  85,  56,  -4,  -37,  91,  126, 112, 24,  9,  27, 76,
     -50,  9,   79,  -40, -96, 86,   83,  -125, 118,  118, 125, -35, -74, 99,  -109, -10, -65, -54, 76,  -27},
    {-3, 110, 0,   107, 93,  -26, 51,  76,   -111, 61, -78, -100, -27,  28,  -94, 26,  -63,  -99, 34,  3,   105, -21,
     21, 78,  -77, 92,  -45, 3,   8,   -116, -66,  43, -64, 92,   -10,  85,  101, 56,  106,  -4,  125, -37, 117, 91,
     63, 126, -21, 112, 52,  -96, 110, 86,   109,  83, 62,  -125, -125, 118, -38, 118, -124, 125, -76, -35}};

typedef struct {
    int8_t a[64];
    int8_t b[64];
    int8_t expect[64];
} test_mm512_unpackhi_epi8_data_model;
static test_mm512_unpackhi_epi8_data_model g_test_mm512_unpackhi_epi8_data = {
    {50,  36,  -102, 43,  -124, -47, -17,  -68,  -99, 17,   -40,  100,  61,   -67, 102, -81,
     1,   68,  -100, 82,  -18,  25,  -65,  -118, 93,  -122, 23,   -126, 0,    81,  -39, -6,
     -54, 36,  57,   62,  -107, 10,  -118, -55,  67,  115,  -12,  73,   -117, 60,  67,  -74,
     -20, -77, -36,  -48, 26,   -12, 13,   -44,  -91, 30,   -112, 89,   -89,  -27, 116, 105},
    {36,  -8,  -20, -81, -120, 52,  -12, -50, -18, 80,  -70, 11,   36, -105, -109, -15, 99,   4,  70,  -53, 90,  25,
     19,  87,  -19, -85, 48,   -89, -70, 19,  64,  -22, 114, -107, 76, 24,   -70,  52,  -12,  78, -3,  41,  -28, -77,
     -46, 120, -84, 120, -16,  -43, 100, -52, -12, 18,  -21, -79,  15, 94,   -86,  21,  -110, 69, 104, -57},
    {-99,  -18, 17,  80,  -40, -70, 100, 11, 61,   36,  -67, -105, 102, -109, -81, -15, 93,  -19, -122, -85, 23, 48,
     -126, -89, 0,   -70, 81,  19,  -39, 64, -6,   -22, 67,  -3,   115, 41,   -12, -28, 73,  -77, -117, -46, 60, 120,
     67,   -84, -74, 120, -91, 15,  30,  94, -112, -86, 89,  21,   -89, -110, -27, 69,  116, 104, 105,  -57}};

typedef struct {
    int32_t a[4];
    int32_t expect[4];
} test_mm_storeu_si128_data_model;
static test_mm_storeu_si128_data_model g_test_mm_storeu_si128_data = {{-59, -99, 96, 41},
                                                                      {-59, -99, 96, 41}};

typedef struct {
    int32_t a[8];
    int32_t expect[8];
} test_mm256_store_si256_data_model;
static test_mm256_store_si256_data_model g_test_mm256_store_si256_data = {{-59, -99, 96, 41, 74, 33, -117, -24},
                                                                          {-59, -99, 96, 41, 74, 33, -117, -24}};

typedef struct {
    int32_t a[8];
    int32_t expect[8];
} test_mm256_storeu_si256_data_model;
static test_mm256_storeu_si256_data_model g_test_mm256_storeu_si256_data = {{-59, -99, 96, 41, 74, 33, -117, -24},
                                                                            {-59, -99, 96, 41, 74, 33, -117, -24}};

typedef struct {
    int32_t a[8];
    int32_t expect[8];
} test_mm256_stream_si256_data_model;
static test_mm256_stream_si256_data_model g_test_mm256_stream_si256_data = {{-59, -99, 96, 41, 74, 33, -117, -24},
                                                                            {-59, -99, 96, 41, 74, 33, -117, -24}};

typedef struct {
    int32_t a[16];
    int32_t expect[16];
} test_mm512_store_si512_data_model;
static test_mm512_store_si512_data_model g_test_mm512_store_si512_data = {
    {-59, -99, 96, 41, 74, 33, -117, -24, -9, 19, 6, 12, 33, 4, -11, -4},
    {-59, -99, 96, 41, 74, 33, -117, -24, -9, 19, 6, 12, 33, 4, -11, -4}};

typedef struct {
    int32_t a[16];
    int32_t expect[16];
} test_mm512_storeu_si512_data_model;
static test_mm512_storeu_si512_data_model g_test_mm512_storeu_si512_data = {
    {-59, -99, 96, 41, 74, 33, -117, -24, -9, 19, 6, 12, 33, 4, -11, -4},
    {-59, -99, 96, 41, 74, 33, -117, -24, -9, 19, 6, 12, 33, 4, -11, -4}};

typedef struct {
    int32_t a[16];
    int32_t expect[16];
} test_mm512_stream_si512_data_model;
static test_mm512_stream_si512_data_model g_test_mm512_stream_si512_data = {
    {-59, -99, 96, 41, 74, 33, -117, -24, -9, 19, 6, 12, 33, 4, -11, -4},
    {-59, -99, 96, 41, 74, 33, -117, -24, -9, 19, 6, 12, 33, 4, -11, -4}};

typedef struct {
    int32_t a[8];
    int32_t b[4];
    int32_t expect[8];
} test_mm256_inserti128_si256_data_model;
static test_mm256_inserti128_si256_data_model g_test_mm256_inserti128_si256_data = {
    {13, -115, 0, 400, 32, 98, 36, -78}, {466, 100, 3, -7}, {466, 100, 3, -7, 32, 98, 36, -78}};

typedef struct {
    float32_t a[8];
    float32_t b[4];
    int imm;
    float32_t expect[8];
} test_mm256_insertf128_ps_data_model;
static test_mm256_insertf128_ps_data_model g_test_mm256_insertf128_ps_data = {
    {1.000000, 0.000000, -23.559999, 100.199997, -345.000000, -399.450012, -888.658020, 10.220000},
    {111.345001, -342.000000, 109.000000, 799.654724},
    0,
    {111.345001, -342.000000, 109.000000, 799.654724, -345.000000, -399.450012, -888.658020, 10.220000}};

typedef struct {
    float64_t a[4];
    float64_t b[2];
    int imm;
    float64_t expect[4];
} test_mm256_insertf128_pd_data_model;
static test_mm256_insertf128_pd_data_model g_test_mm256_insertf128_pd_data = {
    {1.000000, 0.000000, -23.560000, 100.200000},
    {-345.000000, -399.450000},
    0,
    {-345.000000, -399.450000, -23.560000, 100.200000}};

typedef struct {
    int64_t a[4];
    int imm;
    int64_t expect[4];
} test_mm256_permute4x64_epi64_data_model;
static test_mm256_permute4x64_epi64_data_model g_test_mm256_permute4x64_epi64_data = {
    {100, 200, 300, 400}, 27, {400, 300, 200, 100}};

typedef struct {
    int64_t a[4];
    int64_t b[4];
    int imm;
    int64_t expect[4];
} test_mm256_permute2f128_si256_data_model;
static test_mm256_permute2f128_si256_data_model g_test_mm256_permute2f128_si256_data = {
    {100, 200, 300, 400},
    {125, 852, 453, 20},
    27,
    {0, 0, 300, 400}};

typedef struct {
    float64_t a[2];
    float64_t expect[2];
} test_mm_set_pd_data_model;
static test_mm_set_pd_data_model g_test_mm_set_pd_data = {{2.019, 11.15}, {2.019, 11.15}};

typedef struct {
    int32_t a[8];
    int32_t expect[8];
} test_mm256_set_epi32_data_model;
static test_mm256_set_epi32_data_model g_test_mm256_set_epi32_data = {
    {1, 2, 3, 4, 5, 6, 7, 8},
    {1, 2, 3, 4, 5, 6, 7, 8},
};

typedef struct {
    int64_t a[8];
    int64_t expect[8];
} test_mm256_set_epi64x_data_model;
static test_mm256_set_epi64x_data_model g_test_mm256_set_epi64x_data = {
    {1LL, 2LL, 3LL, 4LL},
    {1LL, 2LL, 3LL, 4LL},
};

typedef struct {
    int32_t a[8];
    int32_t expect[8];
} test_mm256_set_m128i_data_model;
static test_mm256_set_m128i_data_model g_test_mm256_set_m128i_data = {
    {1, 2, 3, 4, 5, 6, 7, 8},
    {1, 2, 3, 4, 5, 6, 7, 8},
};

typedef struct {
    float32_t a[8];
    float32_t expect[8];
} test_mm256_set_ps_data_model;
static test_mm256_set_ps_data_model g_test_mm256_set_ps_data = {
    {2.0f, 1.9f, 1.0f, 1.0f, 1.0f, 5.0f, 1.2f, 0.8f},
    {2.0f, 1.9f, 1.0f, 1.0f, 1.0f, 5.0f, 1.2f, 0.8f},
};

typedef struct {
    float64_t a[4];
    float64_t expect[4];
} test_mm256_set_pd_data_model;
static test_mm256_set_pd_data_model g_test_mm256_set_pd_data = {
    {2.019, 1.1, 1.5, 1.208},
    {2.019, 1.1, 1.5, 1.208},
};

typedef struct {
    int32_t expect[4];
} test_mm_setzero_si128_data_model;
static test_mm_setzero_si128_data_model g_test_mm_setzero_si128_data = {
    {0, 0, 0, 0},
};

typedef struct {
    int32_t expect[8];
} test_mm256_setzero_si256_data_model;
static test_mm256_setzero_si256_data_model g_test_mm256_setzero_si256_data = {
    {0, 0, 0, 0, 0, 0, 0, 0},
};

typedef struct {
    int32_t expect[16];
} test_mm512_setzero_si512_data_model;
static test_mm512_setzero_si512_data_model g_test_mm512_setzero_si512_data = {
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
};

typedef struct {
    float32_t expect[8];
} test_mm256_setzero_ps_data_model;
static test_mm256_setzero_ps_data_model g_test_mm256_setzero_ps_data = {
    {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f},
};

typedef struct {
    float64_t expect[4];
} test_mm256_setzero_pd_data_model;
static test_mm256_setzero_pd_data_model g_test_mm256_setzero_pd_data = {
    {0.0, 0.0, 0.0, 0.0},
};

typedef struct {
    int8_t a;
    int8_t expect[16];
} test_mm_set1_epi8_data_model;
static test_mm_set1_epi8_data_model g_test_mm_set1_epi8_data = {
    '0',
    {'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'},
};

typedef struct {
    int32_t a;
    int32_t expect[4];
} test_mm_set1_epi32_data_model;
static test_mm_set1_epi32_data_model g_test_mm_set1_epi32_data = {
    2019,
    {2019, 2019, 2019, 2019},
};

typedef struct {
    float32_t a;
    float32_t expect[4];
} test_mm_set1_ps_data_model;
static test_mm_set1_ps_data_model g_test_mm_set1_ps_data = {
    2.019f,
    {2.019f, 2.019f, 2.019f, 2.019f},
};

typedef struct {
    int64_t a;
    int64_t expect[2];
} test_mm_set1_epi64x_data_model;
static test_mm_set1_epi64x_data_model g_test_mm_set1_epi64x_data = {
    2019LL,
    {2019LL, 2019LL},
};

typedef struct {
    float64_t a;
    float64_t expect[2];
} test_mm_set1_pd_data_model;
static test_mm_set1_pd_data_model g_test_mm_set1_pd_data = {
    2.019,
    {2.019, 2.019},
};

typedef struct {
    int8_t a;
    int8_t expect[32];
} test_mm256_set1_epi8_data_model;
static test_mm256_set1_epi8_data_model g_test_mm256_set1_epi8_data = {
    '0',
    {'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
     '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'},
};

typedef struct {
    int32_t a;
    int32_t expect[8];
} test_mm256_set1_epi32_data_model;
static test_mm256_set1_epi32_data_model g_test_mm256_set1_epi32_data = {
    2019,
    {2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019},
};

typedef struct {
    int64_t a;
    int64_t expect[4];
} test_mm256_set1_epi64x_data_model;
static test_mm256_set1_epi64x_data_model g_test_mm256_set1_epi64x_data = {
    2019LL,
    {2019LL, 2019LL, 2019LL, 2019LL},
};

typedef struct {
    float64_t a;
    float64_t expect[4];
} test_mm256_set1_pd_data_model;
static test_mm256_set1_pd_data_model g_test_mm256_set1_pd_data = {
    2.019,
    {2.019, 2.019, 2.019, 2.019},
};

typedef struct {
    float32_t a;
    float32_t expect[8];
} test_mm256_set1_ps_data_model;
static test_mm256_set1_ps_data_model g_test_mm256_set1_ps_data = {
    2.019f,
    {2.019f, 2.019f, 2.019f, 2.019f, 2.019f, 2.019f, 2.019f, 2.019f},
};

typedef struct {
    int32_t a[8];
    int32_t expect[8];
} test_mm_loadu_si128_data_model;
static test_mm_loadu_si128_data_model g_test_mm_loadu_si128_data = {
    {1, 2, 3, 4},
    {1, 2, 3, 4},
};

typedef struct {
    int32_t a[8];
    int32_t expect[8];
} test_mm256_load_si256_data_model;
static test_mm256_load_si256_data_model g_test_mm256_load_si256_data = {
    {1, 2, 3, 4, 5, 6, 7, 8},
    {1, 2, 3, 4, 5, 6, 7, 8},
};

typedef struct {
    int32_t a[8];
    int32_t expect[8];
} test_mm256_loadu_si256_data_model;
static test_mm256_loadu_si256_data_model g_test_mm256_loadu_si256_data = {
    {1, 2, 3, 4, 5, 6, 7, 8},
    {1, 2, 3, 4, 5, 6, 7, 8},
};

typedef struct {
    int32_t a[8];
    int32_t mask[8];
    int32_t expect[8];
} test_mm256_maskload_epi32_data_model;
static test_mm256_maskload_epi32_data_model g_test_mm256_maskload_epi32_data = {
    {1, 2, 3, 4, 5, 6, 7, 8},
    {-1, -1, -1, 0, 0, 0, 0, -1},
    {1, 2, 3, 0, 0, 0, 0, 8},
};

typedef struct {
    int32_t __attribute__((aligned(64))) a[16];
    int32_t __attribute__((aligned(64))) expect[16];
} test_mm512_load_si512_data_model;
static test_mm512_load_si512_data_model g_test_mm512_load_si512_data = {
    {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16},
    {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16},
};

typedef struct {
    int32_t a[16];
    int32_t expect[16];
} test_mm512_loadu_si512_data_model;
static test_mm512_loadu_si512_data_model g_test_mm512_loadu_si512_data = {
    {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16},
    {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16},
};

typedef struct {
    int8_t src;
    unsigned long long mask;
    int8_t mem_addr[64];
    int8_t expect[64];
} test_mm512_mask_loadu_epi8_data_model;
static test_mm512_mask_loadu_epi8_data_model g_test_mm512_mask_loadu_epi8_data = {
    0x01,
    0xFFFFFF00000000FFULL,
    {0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
     0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
     0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
     0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00},

    {0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
     0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
     0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
     0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00},
};

typedef struct {
    unsigned long long k;
    int8_t mem_addr[64];
    int8_t expect[64];
} test_mm512_maskz_loadu_epi8_data_model;
static test_mm512_maskz_loadu_epi8_data_model g_test_mm512_maskz_loadu_epi8_data = {
    0xFFFFFF00000000FFULL,
    {0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
     0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
     0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
     0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00},

    {0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
     0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00},
};

typedef struct {
    int8_t a[64];
    int8_t expect[64];
} test_mm512_abs_epi8_data_model;
static test_mm512_abs_epi8_data_model g_test_mm512_abs_epi8_data = {
    {1,  0,  0,  0,  2,  0,  0,  0,  -1, -2, -3, -4, -1, -2, -3, -4, -1, -2, -3, -4, -1, -2,
     -3, -4, -1, -2, -3, -4, -1, -2, -3, -4, -1, -2, -3, -4, -1, -2, -3, -4, 11, 0,  0,  0,
     12, 0,  0,  0,  13, 0,  0,  0,  14, 0,  0,  0,  15, 0,  0,  0,  16, 0,  0,  0},

    {1, 0, 0, 0, 2, 0, 0, 0, 1,  2, 3, 4, 1,  2, 3, 4, 1,  2, 3, 4, 1,  2, 3, 4, 1,  2, 3, 4, 1,  2, 3, 4,
     1, 2, 3, 4, 1, 2, 3, 4, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0},
};

typedef struct {
    int64_t a[2];
    int64_t expect[4];
} test_mm256_broadcastq_epi64_data_model;
static test_mm256_broadcastq_epi64_data_model g_test_mm256_broadcastq_epi64_data = {
    {2019LL, 2018LL},
    {2019LL, 2019LL, 2019LL, 2019LL},
};

typedef struct {
    int64_t a[2];
    int64_t expect[4];
} test_mm256_broadcastsi128_si256_data_model;
static test_mm256_broadcastsi128_si256_data_model g_test_mm256_broadcastsi128_si256_data = {
    {2019LL, 2018LL},
    {2019LL, 2018LL, 2019LL, 2018LL},
};

typedef struct {
    int32_t a[4];
    int32_t expect[16];
} test_mm512_broadcast_i32x4_data_model;
static test_mm512_broadcast_i32x4_data_model g_test_mm512_broadcast_i32x4_data = {
    {2016, 2017, 2018, 2019},
    {2016, 2017, 2018, 2019, 2016, 2017, 2018, 2019, 2016, 2017, 2018, 2019, 2016, 2017, 2018, 2019}};

typedef struct {
    int64_t a[4];
    int64_t expect[8];
} test_mm512_broadcast_i64x4_data_model;
static test_mm512_broadcast_i64x4_data_model g_test_mm512_broadcast_i64x4_data = {
    {2016LL, 2017LL, 2018LL, 2019LL}, {2016LL, 2017LL, 2018LL, 2019LL, 2016LL, 2017LL, 2018LL, 2019LL}};

typedef struct {
    int64_t src[8];
    unsigned char k;
    int64_t a[4];
    int64_t expect[8];
} test_mm512_mask_broadcast_i64x4_data_model;
static test_mm512_mask_broadcast_i64x4_data_model g_test_mm512_mask_broadcast_i64x4_data = {
    {2000LL, 2004LL, 2008LL, 2012LL, 2016LL, 2020LL, 2024LL, 2028LL},
    0xAA,
    {2018LL, 2019LL, 2018LL, 2019LL},
    {2000LL, 2019LL, 2008LL, 2019LL, 2016LL, 2019LL, 2024LL, 2019LL},
};

typedef struct {
    float64_t a[2];
    float64_t expect[4];
} test_mm256_castpd128_pd256_data_model;
static test_mm256_castpd128_pd256_data_model g_test_mm256_castpd128_pd256_data = {
    {2.019, 1.119},
    {2.019, 1.119, 0.0, 0.0},
};

typedef struct {
    float64_t a[4];
    float64_t expect[2];
} test_mm256_castpd256_pd128_data_model;
static test_mm256_castpd256_pd128_data_model g_test_mm256_castpd256_pd128_data = {
    {2.019, 1.1, 1.9, 1.2},
    {2.019, 1.1},
};

typedef struct {
    float32_t a[4];
    float32_t expect[8];
} test_mm256_castps128_ps256_data_model;
static test_mm256_castps128_ps256_data_model g_test_mm256_castps128_ps256_data = {
    {2.019f, 1.1f, 1.9f, 1.2f},
    {2.019f, 1.1f, 1.9f, 1.2f, 0.0f, 0.0f, 0.0f, 0.0f},
};

typedef struct {
    float32_t a[8];
    float32_t expect[4];
} test_mm256_castps256_ps128_data_model;
static test_mm256_castps256_ps128_data_model g_test_mm256_castps256_ps128_data = {
    {2.0f, 1.9f, 1.0f, 1.0f, 1.0f, 9.0f, 1.2f, 0.8f},
    {2.0f, 1.9f, 1.0f, 1.0f},
};

typedef struct {
    int32_t a[4];
    float32_t expect[4];
} test_mm_castsi128_ps_data_model;
static test_mm_castsi128_ps_data_model g_test_mm_castsi128_ps_data = {
    {1065353216, 1073741824, 1077936128, 1082130432},
    {1.0f, 2.0f, 3.0f, 4.0f},
};

typedef struct {
    int32_t a[4];
    int32_t expect[8];
} test_mm256_castsi128_si256_data_model;
static test_mm256_castsi128_si256_data_model g_test_mm256_castsi128_si256_data = {
    {2019, 11, 19, 12},
    {2019, 11, 19, 12, 0, 0, 0, 0},
};

typedef struct {
    int32_t a[8];
    float32_t expect[8];
} test_mm256_castsi256_ps_data_model;
static test_mm256_castsi256_ps_data_model g_test_mm256_castsi256_ps_data = {
    {1065353216, 1073741824, 1077936128, 1082130432, 1084227584, 1086324736, 1088421888, 1090519040},
    {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f},
};

typedef struct {
    int32_t a[8];
    int32_t expect[4];
} test_mm256_castsi256_si128_data_model;
static test_mm256_castsi256_si128_data_model g_test_mm256_castsi256_si128_data = {
    {1, 2, 3, 4, 5, 6, 7, 8},
    {1, 2, 3, 4},
};

typedef struct {
    int32_t a;
    int32_t expect[4];
} test_mm_cvtsi32_si128_data_model;
static test_mm_cvtsi32_si128_data_model g_test_mm_cvtsi32_si128_data = {
    2020,
    {2020, 0, 0, 0},
};

typedef struct {
    int32_t a[4];
    int32_t expect;
} test_mm_cvtsi128_si32_data_model;
static test_mm_cvtsi128_si32_data_model g_test_mm_cvtsi128_si32_data = {
    {2023, 2022, 2021, 2020},
    2023,
};

typedef struct {
    int32_t a[4];
    float64_t expect[4];
} test_mm256_cvtepi32_pd_data_model;
static test_mm256_cvtepi32_pd_data_model g_test_mm256_cvtepi32_pd_data = {
    {2019, 11, 19, 12},
    {2019.0, 11.0, 19.0, 12.0},
};

typedef struct {
    int32_t a[8];
    float32_t expect[8];
} test_mm256_cvtepi32_ps_data_model;
static test_mm256_cvtepi32_ps_data_model g_test_mm256_cvtepi32_ps_data = {
    {1, 2, 3, 4, 5, 6, 7, 8},
    {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f},
};

typedef struct {
    int8_t a[32];
    int8_t b[32];
    const int count;
    int8_t expect[32];
} test_mm256_alignr_epi8_data_model;
static test_mm256_alignr_epi8_data_model g_test_mm256_alignr_epi8_data = {
    {-84, -84, -7,  -9, -38, -10, -9,  -102, 27, -85, 53, 59, -95, -7,  51, -18,
     -6,  66,  -48, 68, 108, 16,  104, 62,   83, 17,  73, 15, 34,  -93, 37, -76},
    {94, 99,  54,  80, 50,  101, 45, -38, -87, -115, 96,  -122, -43,  -71, 28, 95,
     26, 116, -70, 43, -69, -28, 42, 4,   105, 8,    -52, 106,  -120, -43, 18, -97},
    16,
    {-84, -84, -7,  -9, -38, -10, -9,  -102, 27, -85, 53, 59, -95, -7,  51, -18,
     -6,  66,  -48, 68, 108, 16,  104, 62,   83, 17,  73, 15, 34,  -93, 37, -76}};

typedef struct {
    int16_t a[8];
    int16_t b[8];
    int la;
    int lb;
    const int imm8;
    int expect;
} test_mm_cmpestri_data_model;
static test_mm_cmpestri_data_model g_test_mm_cmpestri_data_model_data = {{13, 6, 5, 4, 3, 2, 1, 3},
                                                                         {-7, 16, 5, 4, -1, 6, 1, 3},
                                                                         10,
                                                                         10,
                                                                         _SIDD_SWORD_OPS | _SIDD_CMP_RANGES |
                                                                             _SIDD_MOST_SIGNIFICANT,
                                                                         7};

typedef struct {
    int16_t a[8];
    int16_t b[8];
    int la;
    int lb;
    const int imm8;
    int16_t expect[8];
} test_mm_cmpestrm_data_model;
static test_mm_cmpestrm_data_model g_test_mm_cmpestrm_data_model_data = {{13, 6, 5, 4, 3, 2, 1, 3},
                                                                         {-7, 16, 5, 4, -1, 6, 1, 3},
                                                                         10,
                                                                         10,
                                                                         _SIDD_SWORD_OPS | _SIDD_CMP_RANGES |
                                                                             _SIDD_MOST_SIGNIFICANT,
                                                                         {0, 0, 0, 0, 0, 0, -1, -1}};

typedef struct {
    int32_t a[4];
    int i;
    const int imm8;
    int32_t expect[8];
} test_mm_insert_epi32_data_model;
static test_mm_insert_epi32_data_model g_test_mm_insert_epi32_data = {
    {2019, 12, 17, 12}, 1314, 3, {2019, 12, 17, 1314}};

typedef struct {
    int32_t a[8];
    int32_t i;
    const int index;
    int32_t expect[8];
} test_mm256_insert_epi32_data_model;
static test_mm256_insert_epi32_data_model g_test_mm256_insert_epi32_data = {
    {20, 19, 0, 12, 0, 17, 11, 28}, 12, 6, {20, 19, 0, 12, 0, 17, 12, 28}};

typedef struct {
    int64_t a[4];
    int64_t i;
    const int index;
    int64_t expect[4];
} test_mm256_insert_epi64_data_model;
static test_mm256_insert_epi64_data_model g_test_mm256_insert_epi64_data = {
    {2019, 12, 17, 12}, 1314, 3, {2019, 12, 17, 1314}};

typedef struct {
    double a[2];
    double expect[8];
} test_mm512_castpd128_pd512_data_model;
static test_mm512_castpd128_pd512_data_model g_test_mm512_castpd128_pd512_data = {
    {2.019, 1.217}, {2.019, 1.217, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}};

typedef struct {
    double a[8];
    double expect[2];
} test_mm512_castpd512_pd128_data_model;
static test_mm512_castpd512_pd128_data_model g_test_mm512_castpd512_pd128_data = {
    {2.019, 1.217, 3.14, 3.141, 3.1415, 3.14159, 3.141592, 3.1415926}, {2.019, 1.217}};

typedef struct {
    float a[4];
    float expect[16];
} test_mm512_castps128_ps512_data_model;
static test_mm512_castps128_ps512_data_model g_test_mm512_castps128_ps512_data = {
    {2.0f, 1.9f, 1.2f, 1.7f},
    {2.0f, 1.9f, 1.2f, 1.7f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}};

typedef struct {
    float a[16];
    float expect[4];
} test_mm512_castps512_ps128_data_model;
static test_mm512_castps512_ps128_data_model g_test_mm512_castps512_ps128_data = {
    {2.0f, 1.9f, 1.2f, 1.7f, 3.1f, 3.2f, 3.3f, 3.4f, 3.5f, 3.6f, 3.7f, 3.8f, 3.9f, 4.0f, 4.1f, 4.2f},
    {2.0f, 1.9f, 1.2f, 1.7f}};

typedef struct {
    int32_t a[8];
    double expect[8];
} test_mm512_cvtepi32_pd_data_model;
static test_mm512_cvtepi32_pd_data_model g_test_mm512_cvtepi32_pd_data = {
    {20, 19, 0, 12, 0, 17, 11, 28}, {20.0, 19.0, 0.0, 12.0, 0.0, 17.0, 11.0, 28.0}};

typedef struct {
    int32_t a[16];
    float expect[16];
} test_mm512_cvtepi32_ps_data_model;
static test_mm512_cvtepi32_ps_data_model g_test_mm512_cvtepi32_ps_data = {
    {20, 19, 0, 12, 0, 17, 11, 28, 107, 40, 33, 39, 118, 21, 29, 11},
    {20.0f, 19.0f, 0.0f, 12.0f, 0.0f, 17.0f, 11.0f, 28.0f, 107.0f, 40.0f, 33.0f, 39.0f, 118.0f, 21.0f, 29.0f, 11.0f}};

typedef struct {
    float a[16];
    float b[8];
    int imm8;
    float expect[16];
} test_mm512_insertf32x8_data_model;
static test_mm512_insertf32x8_data_model g_test_mm512_insertf32x8_data = {
    {2.0f, 1.9f, 1.2f, 1.7f, 3.1f, 3.2f, 3.3f, 3.4f, 3.5f, 3.6f, 3.7f, 3.8f, 3.9f, 4.0f, 4.1f, 4.2f},
    {2.0f, 1.9f, 0.0f, 1.2f, 0.0f, 1.7f, 1.1f, 2.8f},
    1,
    {2.0f, 1.9f, 1.2f, 1.7f, 3.1f, 3.2f, 3.3f, 3.4f, 2.0f, 1.9f, 0.0f, 1.2f, 0.0f, 1.7f, 1.1f, 2.8f}};

typedef struct {
    double a[8];
    double b[4];
    int imm8;
    double expect[8];
} test_mm512_insertf64x4_data_model;
static test_mm512_insertf64x4_data_model g_test_mm512_insertf64x4_data = {
    {2.019, 1.217, 3.14, 3.141, 3.1415, 3.14159, 3.141592, 3.1415926},
    {2.0, 1.9, 1.2, 1.7},
    0,
    {2.0, 1.9, 1.2, 1.7, 3.1415, 3.14159, 3.141592, 3.1415926}};

typedef struct {
    int32_t a[16];
    int32_t b[8];
    int imm8;
    int32_t expect[16];
} test_mm512_inserti32x8_data_model;
static test_mm512_inserti32x8_data_model g_test_mm512_inserti32x8_data = {
    {20, 19, 0, 12, 0, 17, 11, 28, 107, 40, 33, 39, 118, 21, 29, 11},
    {1, 2, 3, 4, 5, 6, 7, 8},
    1,
    {20, 19, 0, 12, 0, 17, 11, 28, 1, 2, 3, 4, 5, 6, 7, 8}};

typedef struct {
    int64_t a[8];
    int64_t b[4];
    int imm8;
    int64_t expect[8];
} test_mm512_inserti64x4_data_model;
static test_mm512_inserti64x4_data_model g_test_mm512_inserti64x4_data = {
    {20, 19, 0, 12, 0, 17, 11, 28}, {1, 2, 3, 4}, 1, {20, 19, 0, 12, 1, 2, 3, 4}};

typedef struct {
    int32_t idx[16];
    int32_t a[16];
    int32_t expect[16];
} test_mm512_permutexvar_epi32_data_model;
static test_mm512_permutexvar_epi32_data_model g_test_mm512_permutexvar_epi32_data = {
    {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16},
    {1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000, 11000, 12000, 13000, 14000, 15000, 16000},
    {2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000, 11000, 12000, 13000, 14000, 15000, 16000, 1000},
};

typedef struct {
    int32_t a[4];
    int32_t expect[4];
} test_mm_load_epi32_data_model;
static test_mm_load_epi32_data_model g_test_mm_load_epi32_data = {
    {1, 16516, -21313, -545454},
    {1, 16516, -21313, -545454}};

typedef struct {
    int64_t a[2];
    int64_t expect[2];
} test_mm_load_epi64_data_model;
static test_mm_load_epi64_data_model g_test_mm_load_epi64_data = {
    {-21313, -545454},
    {-21313, -545454}};

typedef struct {
    int32_t a[4];
    int32_t expect[4];
} test_mm_load_si128_data_model;
static test_mm_load_si128_data_model g_test_mm_load_si128_data = {
    {1, 16516, -21313, -545454},
    {1, 16516, -21313, -545454}};

typedef struct {
    float64_t a[2];
    float64_t expect[2];
} test_mm_load_pd_data_model;
static test_mm_load_pd_data_model g_test_mm_load_pd_data = {
    {13132.31, -666.66},
    {13132.31, -666.66}};

typedef struct {
    float32_t a[4];
    float32_t expect[4];
} test_mm_load_ps_data_model;
static test_mm_load_ps_data_model g_test_mm_load_ps_data = {
    {55720.105469, 64281.750000, 89742.835938, 73413.921875},
    {55720.105469, 64281.750000, 89742.835938, 73413.921875}};

typedef struct {
    int32_t a[8];
    int32_t expect[8];
} test_mm256_load_epi32_data_model;
static test_mm256_load_epi32_data_model g_test_mm256_load_epi32_data = {
    {1, 16516, -21313, -545454, -2147483648, 313213, -1695550175, -486101411},
    {1, 16516, -21313, -545454, -2147483648, 313213, -1695550175, -486101411}};

typedef struct {
    int64_t a[4];
    int64_t expect[4];
} test_mm256_load_epi64_data_model;
static test_mm256_load_epi64_data_model g_test_mm256_load_epi64_data = {
    {-2147483648, 313213, -1695550175, -486101411},
    {-2147483648, 313213, -1695550175, -486101411}};

typedef struct {
    float32_t a[8];
    float32_t expect[8];
} test_mm256_load_ps_data_model;
static test_mm256_load_ps_data_model g_test_mm256_load_ps_data = {
    {55720.105469, 64281.750000, 89742.835938, 73413.921875, 62127.492188, 89540.796875, 91808.859375, 18845.945312},
    {55720.105469, 64281.750000, 89742.835938, 73413.921875, 62127.492188, 89540.796875, 91808.859375, 18845.945312}};

typedef struct {
    float64_t a[4];
    float64_t expect[4];
} test_mm256_load_pd_data_model;
static test_mm256_load_pd_data_model g_test_mm256_load_pd_data = {
    {64281.750000, 89742.835938, 73413.921875, 62127.492188},
    {64281.750000, 89742.835938, 73413.921875, 62127.492188}};


typedef struct {
    int32_t a[16];
    int32_t expect[16];
} test_mm512_load_epi32_data_model;
static test_mm512_load_epi32_data_model g_test_mm512_load_epi32_data = {
    {1, 16516, -21313, -545454, -2147483648, 313213, -1695550175, -486101411, 1, 16516, -21313, -545454, -2147483648,
     313213, -1695550175, -486101411},
    {1, 16516, -21313, -545454, -2147483648, 313213, -1695550175, -486101411, 1, 16516, -21313, -545454, -2147483648,
     313213, -1695550175, -486101411}};

typedef struct {
    int64_t a[8];
    int64_t expect[8];
} test_mm512_load_epi64_data_model;
static test_mm512_load_epi64_data_model g_test_mm512_load_epi64_data = {
    {-21313, -545454, -2147483648, 313213, -1695550175, -486101411, 1, 16516},
    {-21313, -545454, -2147483648, 313213, -1695550175, -486101411, 1, 16516}};

typedef struct {
    float32_t a[16];
    float32_t expect[16];
} test_mm512_load_ps_data_model;
static test_mm512_load_ps_data_model g_test_mm512_load_ps_data = {
    {55720.105469, 64281.750000, 89742.835938, 73413.921875, 62127.492188, 89540.796875, 91808.859375, 18845.945312,
     35417.636719, 12672.005859, 48391.230469, 99421.414062, 26799.482422, 18733.376953, 87186.093750, 14267.460938},
    {55720.105469, 64281.750000, 89742.835938, 73413.921875, 62127.492188, 89540.796875, 91808.859375, 18845.945312,
     35417.636719, 12672.005859, 48391.230469, 99421.414062, 26799.482422, 18733.376953, 87186.093750, 14267.460938}};

typedef struct {
    float64_t a[8];
    float64_t expect[8];
} test_mm512_load_pd_data_model;
static test_mm512_load_pd_data_model g_test_mm512_load_pd_data = {
    {55720.105469, 64281.750000, 89742.835938, 73413.921875, 62127.492188, 89540.796875, 91808.859375, 18845.945312},
    {55720.105469, 64281.750000, 89742.835938, 73413.921875, 62127.492188, 89540.796875, 91808.859375, 18845.945312}};

typedef struct {
    int32_t a[4];
    int32_t expect[4];
} test_mm_store_epi32_data_model;
static test_mm_store_epi32_data_model g_test_mm_store_epi32_data = {
    {1, 16516, -21313, -545454},
    {1, 16516, -21313, -545454}};

typedef struct {
    int64_t a[2];
    int64_t expect[2];
} test_mm_store_epi64_data_model;
static test_mm_store_epi64_data_model g_test_mm_store_epi64_data = {
    {-21313, -545454},
    {-21313, -545454}};

typedef struct {
    int32_t a[4];
    int32_t expect[4];
} test_mm_store_si128_data_model;
static test_mm_store_si128_data_model g_test_mm_store_si128_data = {
    {1, 16516, -21313, -545454},
    {1, 16516, -21313, -545454}};

typedef struct {
    float64_t a[2];
    float64_t expect[2];
} test_mm_store_pd_data_model;
static test_mm_store_pd_data_model g_test_mm_store_pd_data = {
    {13132.31, -666.66},
    {13132.31, -666.66}};

typedef struct {
    float32_t a[4];
    float32_t expect[4];
} test_mm_store_ps_data_model;
static test_mm_store_ps_data_model g_test_mm_store_ps_data = {
    {55720.105469, 64281.750000, 89742.835938, 73413.921875},
    {55720.105469, 64281.750000, 89742.835938, 73413.921875}};

typedef struct {
    int32_t a[8];
    int32_t expect[8];
} test_mm256_store_epi32_data_model;
static test_mm256_store_epi32_data_model g_test_mm256_store_epi32_data = {
    {1, 16516, -21313, -545454, -2147483648, 313213, -1695550175, -486101411},
    {1, 16516, -21313, -545454, -2147483648, 313213, -1695550175, -486101411}};

typedef struct {
    int64_t a[4];
    int64_t expect[4];
} test_mm256_store_epi64_data_model;
static test_mm256_store_epi64_data_model g_test_mm256_store_epi64_data = {
    {-2147483648, 313213, -1695550175, -486101411},
    {-2147483648, 313213, -1695550175, -486101411}};

typedef struct {
    float32_t a[8];
    float32_t expect[8];
} test_mm256_store_ps_data_model;
static test_mm256_store_ps_data_model g_test_mm256_store_ps_data = {
    {55720.105469, 64281.750000, 89742.835938, 73413.921875, 62127.492188, 89540.796875, 91808.859375, 18845.945312},
    {55720.105469, 64281.750000, 89742.835938, 73413.921875, 62127.492188, 89540.796875, 91808.859375, 18845.945312}};

typedef struct {
    float64_t a[4];
    float64_t expect[4];
} test_mm256_store_pd_data_model;
static test_mm256_store_pd_data_model g_test_mm256_store_pd_data = {
    {64281.750000, 89742.835938, 73413.921875, 62127.492188},
    {64281.750000, 89742.835938, 73413.921875, 62127.492188}};


typedef struct {
    int32_t a[16];
    int32_t expect[16];
} test_mm512_store_epi32_data_model;
static test_mm512_store_epi32_data_model g_test_mm512_store_epi32_data = {
    {1, 16516, -21313, -545454, -2147483648, 313213, -1695550175, -486101411, 1, 16516, -21313, -545454, -2147483648,
     313213, -1695550175, -486101411},
    {1, 16516, -21313, -545454, -2147483648, 313213, -1695550175, -486101411, 1, 16516, -21313, -545454, -2147483648,
     313213, -1695550175, -486101411}};

typedef struct {
    int64_t a[8];
    int64_t expect[8];
} test_mm512_store_epi64_data_model;
static test_mm512_store_epi64_data_model g_test_mm512_store_epi64_data = {
    {-21313, -545454, -2147483648, 313213, -1695550175, -486101411, 1, 16516},
    {-21313, -545454, -2147483648, 313213, -1695550175, -486101411, 1, 16516}};

typedef struct {
    float32_t a[16];
    float32_t expect[16];
} test_mm512_store_ps_data_model;
static test_mm512_store_ps_data_model g_test_mm512_store_ps_data = {
    {55720.105469, 64281.750000, 89742.835938, 73413.921875, 62127.492188, 89540.796875, 91808.859375, 18845.945312,
     35417.636719, 12672.005859, 48391.230469, 99421.414062, 26799.482422, 18733.376953, 87186.093750, 14267.460938},
    {55720.105469, 64281.750000, 89742.835938, 73413.921875, 62127.492188, 89540.796875, 91808.859375, 18845.945312,
     35417.636719, 12672.005859, 48391.230469, 99421.414062, 26799.482422, 18733.376953, 87186.093750, 14267.460938}};

typedef struct {
    float64_t a[8];
    float64_t expect[8];
} test_mm512_store_pd_data_model;
static test_mm512_store_pd_data_model g_test_mm512_store_pd_data = {
    {55720.105469, 64281.750000, 89742.835938, 73413.921875, 62127.492188, 89540.796875, 91808.859375, 18845.945312},
    {55720.105469, 64281.750000, 89742.835938, 73413.921875, 62127.492188, 89540.796875, 91808.859375, 18845.945312}};

typedef struct {
    int32_t a[16];
    int32_t idx[16];
    int32_t b[16];
    int32_t expect[16];
} test_mm512_permutex2var_epi32_data_model;
static test_mm512_permutex2var_epi32_data_model g_test_mm512_permutex2var_epi32_data = {
    {1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000, 11000, 12000, 13000, 14000, 15000, 16000},
    {1, 2, 3, 4, 5, 6, 7, 24, 9, 10, 25, 12, 13, 14, 15, 16},
    {23,  25,  -61, 113, -122, 66,  -24,  -117, -19,  16,  -8,   66,   -50,  -92, -81, 58},
    {2000, 3000, 4000, 5000, 6000, 7000, 8000, -19, 10000, 11000, 16, 13000, 14000, 15000, 16000, 23},
};

typedef struct {
    float32_t a[16];
    float32_t b[16];
    __mmask16 expect[32];
} test_mm512_cmp_ps_mask_data_model;
static test_mm512_cmp_ps_mask_data_model g_test_mm512_cmp_ps_mask_data1 = {
    {-3.200000, NAN, 89.769997, 65.000000, 3336.399902, -98.000000, 1002.000000, -88.653999, NAN, 0.000000, \
     -12.500000, 6678.346191, 453.345001, NAN, -477.345001, 2134.333008,},
    {-78.000000, NAN, -6.200000, 2.000000, 41.200001, NAN, 95.300003, -88.653999, NAN, 88.690002, -100.639999, NAN, \
     6678.346191, 856.435730, 6678.346191, 41124.238281},
    {128, 53760, 53888, 10530, 65407, 11775, 11647, 55005, 10658, 64290, 64418, 0, 54877, 1245, 1117, 65535, 128, \
     53760, 53888, 10530, 65407, 11775, 11647, 55005, 10658, 64290, 64418, 0, 54877, 1245, 1117, 65535}
};
static test_mm512_cmp_ps_mask_data_model g_test_mm512_cmp_ps_mask_data2 = {
    {-3.200000, 99.378502, 89.769997, 65.000000, 3336.399902, -98.000000, 1002.000000, -88.653999, 77.690002, \
     0.000000, -12.500000, 6678.346191, 453.345001, 54646.460938, -477.345001, 2134.333008},
    {-78.000000, 15.600000, -6.200000, 2.000000, 41.200001, 14.000000, 95.300003, -88.653999, -7.690000, 88.690002, \
     -100.639999, -13.778000, 6678.346191, 856.435730, 6678.346191, 41124.238281},
    {128, 53792, 53920, 0, 65407, 11743, 11615, 65535, 128, 53792, 53920, 0, 65407, 11743, 11615, 65535, 128, 53792, \
     53920, 0, 65407, 11743, 11615, 65535, 128, 53792, 53920, 0, 65407, 11743, 11615, 65535}
};

typedef struct {
    float64_t a[8];
    float64_t b[8];
    __mmask8 expect[32];
} test_mm512_cmp_pd_mask_data_model;
static test_mm512_cmp_pd_mask_data_model g_test_mm512_cmp_pd_mask_data1 = {
    {-3.200000, 99.378500, 89.770000, 65.000000, NAN, -88.654000, NAN, 0.000000},
    {NAN, 15.600000, -6.200000, 2.000000, 41.200000, 14.000000, NAN, -88.654000},
    {0, 32, 32, 81, 255, 223, 223, 174, 81, 113, 113, 0, 174, 142, 142, 255, 0, 32, 32, 81, 255, 223, 223, 174, 81, \
     113, 113, 0, 174, 142, 142, 255}
};
static test_mm512_cmp_pd_mask_data_model g_test_mm512_cmp_pd_mask_data2 = {
    {-3.200000, 99.378500, 89.770000, 65.000000, 1002.000000, -88.654000, 77.690000, 0.000000},
    {-78.000000, 15.600000, -6.200000, 2.000000, 41.200000, 14.000000, 95.300000, -88.654000},
    {0, 96, 96, 0, 255, 159, 159, 255, 0, 96, 96, 0, 255, 159, 159, 255, 0, 96, 96, 0, 255, 159, 159, 255, 0, 96, 96, \
     0, 255, 159, 159, 255}
};

static __m256d test_mm256_cmp_pd_data_model_unordered_data1 = {NAN, 6678.346, 453.345635, NAN};
static __m256d test_mm256_cmp_pd_data_model_unordered_data2 = {NAN, 6678.346, NAN, 856.43576};
static long long test_mm256_cmp_pd_data_model_unordered_ret[32][4] = {
    {0, -1, 0, 0},    {0, 0, 0, 0},    {0, -1, 0, 0},    {-1, 0, -1, -1},  {-1, 0, -1, -1},  {-1, -1, -1, -1},
    {-1, 0, -1, -1},  {0, -1, 0, 0},   {-1, -1, -1, -1}, {-1, 0, -1, -1},  {-1, -1, -1, -1}, {0, 0, 0, 0},
    {0, 0, 0, 0},     {0, -1, 0, 0},   {0, 0, 0, 0},     {-1, -1, -1, -1}, {0, -1, 0, 0},    {0, 0, 0, 0},
    {0, -1, 0, 0},    {-1, 0, -1, -1}, {-1, 0, -1, -1},  {-1, -1, -1, -1}, {-1, 0, -1, -1},  {0, -1, 0, 0},
    {-1, -1, -1, -1}, {-1, 0, -1, -1}, {-1, -1, -1, -1}, {0, 0, 0, 0},     {0, 0, 0, 0},     {0, -1, 0, 0},
    {0, 0, 0, 0},     {-1, -1, -1, -1}};
static __m256d test_mm256_cmp_pd_data_model_ordered_data1 = {2134.3343, 6678.346, 453.345635, 54646.464356};
static __m256d test_mm256_cmp_pd_data_model_ordered_data2 = {41124.234, 6678.346, 8653.65635, 856.43576};
static long long test_mm256_cmp_pd_data_model_ordered_ret[32][4] = {
    {0, -1, 0, 0},   {-1, 0, -1, 0},   {-1, -1, -1, 0}, {0, 0, 0, 0},     {-1, 0, -1, -1}, {0, -1, 0, -1},
    {0, 0, 0, -1},   {-1, -1, -1, -1}, {0, -1, 0, 0},   {-1, 0, -1, 0},   {-1, -1, -1, 0}, {0, 0, 0, 0},
    {-1, 0, -1, -1}, {0, -1, 0, -1},   {0, 0, 0, -1},   {-1, -1, -1, -1}, {0, -1, 0, 0},   {-1, 0, -1, 0},
    {-1, -1, -1, 0}, {0, 0, 0, 0},     {-1, 0, -1, -1}, {0, -1, 0, -1},   {0, 0, 0, -1},   {-1, -1, -1, -1},
    {0, -1, 0, 0},   {-1, 0, -1, 0},   {-1, -1, -1, 0}, {0, 0, 0, 0},     {-1, 0, -1, -1}, {0, -1, 0, -1},
    {0, 0, 0, -1},   {-1, -1, -1, -1}};

static __m256 test_mm256_cmp_ps_data_model_unordered_data1 = {77.690002, NAN, 0.000000, -12.500000, NAN, 6678.346191, \
                                                              453.345001, NAN};
static __m256 test_mm256_cmp_ps_data_model_unordered_data2 = {-7.690000, 88.690002, -100.639999, -13.778000, NAN, \
                                                              6678.346191, NAN, 856.778015};
static int test_mm256_cmp_ps_data_model_unordered_ret[32][8] = {
    {0, 0, 0, 0, 0, -1, 0, 0},        {0, 0, 0, 0, 0, 0, 0, 0},        {0, 0, 0, 0, 0, -1, 0, 0}, 
    {0, -1, 0, 0, -1, 0, -1, -1},     {-1, -1, -1, -1, -1, 0, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1}, 
    {-1, -1, -1, -1, -1, 0, -1, -1},  {-1, 0, -1, -1, 0, -1, 0, 0},    {0, -1, 0, 0, -1, -1, -1, -1}, 
    {0, -1, 0, 0, -1, 0, -1, -1},     {0, -1, 0, 0, -1, -1, -1, -1},   {0, 0, 0, 0, 0, 0, 0, 0},
    {-1, 0, -1, -1, 0, 0, 0, 0},      {-1, 0, -1, -1, 0, -1, 0, 0},    {-1, 0, -1, -1, 0, 0, 0, 0}, 
    {-1, -1, -1, -1, -1, -1, -1, -1}, {0, 0, 0, 0, 0, -1, 0, 0},       {0, 0, 0, 0, 0, 0, 0, 0}, 
    {0, 0, 0, 0, 0, -1, 0, 0},        {0, -1, 0, 0, -1, 0, -1, -1},    {-1, -1, -1, -1, -1, 0, -1, -1}, 
    {-1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, 0, -1, -1}, {-1, 0, -1, -1, 0, -1, 0, 0}, 
    {0, -1, 0, 0, -1, -1, -1, -1},    {0, -1, 0, 0, -1, 0, -1, -1},    {0, -1, 0, 0, -1, -1, -1, -1},
    {0, 0, 0, 0, 0, 0, 0, 0},         {-1, 0, -1, -1, 0, 0, 0, 0},     {-1, 0, -1, -1, 0, -1, 0, 0}, 
    {-1, 0, -1, -1, 0, 0, 0, 0},      {-1, -1, -1, -1, -1, -1, -1, -1}};
static __m256 test_mm256_cmp_ps_data_model_ordered_data1 = {77.690002, 0.000000, -12.500000, 6678.346191, 453.345001, \
                                                            54646.460938, -477.345001, 2134.333008};
static __m256 test_mm256_cmp_ps_data_model_ordered_data2 = {-7.690000, 88.690002, -100.639999, -13.778000, \
                                                            6678.346191, 856.435730, 6678.346191, 41124.238281};
static int test_mm256_cmp_ps_data_model_ordered_ret[32][8] = {
    {0, 0, 0, 0, 0, 0, 0, 0},         {0, -1, 0, 0, -1, 0, -1, -1},     {0, -1, 0, 0, -1, 0, -1, -1}, 
    {0, 0, 0, 0, 0, 0, 0, 0},         {-1, -1, -1, -1, -1, -1, -1, -1}, {-1, 0, -1, -1, 0, -1, 0, 0}, 
    {-1, 0, -1, -1, 0, -1, 0, 0},     {-1, -1, -1, -1, -1, -1, -1, -1}, {0, 0, 0, 0, 0, 0, 0, 0}, 
    {0, -1, 0, 0, -1, 0, -1, -1},     {0, -1, 0, 0, -1, 0, -1, -1},     {0, 0, 0, 0, 0, 0, 0, 0}, 
    {-1, -1, -1, -1, -1, -1, -1, -1}, {-1, 0, -1, -1, 0, -1, 0, 0},     {-1, 0, -1, -1, 0, -1, 0, 0},
    {-1, -1, -1, -1, -1, -1, -1, -1}, {0, 0, 0, 0, 0, 0, 0, 0},         {0, -1, 0, 0, -1, 0, -1, -1}, 
    {0, -1, 0, 0, -1, 0, -1, -1},     {0, 0, 0, 0, 0, 0, 0, 0},         {-1, -1, -1, -1, -1, -1, -1, -1}, 
    {-1, 0, -1, -1, 0, -1, 0, 0},     {-1, 0, -1, -1, 0, -1, 0, 0},     {-1, -1, -1, -1, -1, -1, -1, -1}, 
    {0, 0, 0, 0, 0, 0, 0, 0},         {0, -1, 0, 0, -1, 0, -1, -1},     {0, -1, 0, 0, -1, 0, -1, -1}, 
    {0, 0, 0, 0, 0, 0, 0, 0},         {-1, -1, -1, -1, -1, -1, -1, -1}, {-1, 0, -1, -1, 0, -1, 0, 0}, 
    {-1, 0, -1, -1, 0, -1, 0, 0},     {-1, -1, -1, -1, -1, -1, -1, -1}};

typedef struct {
    uint8_t a[16];
    uint8_t b[16];
    uint8_t expect[16];
} test_mm_max_epu8_data_model;
static test_mm_max_epu8_data_model g_test_mm_max_epu8_data = {
    {246, 10, 160, 160, 47,  243, 45, 128, 76, 158, 44, 44, 26, 145, 210, 76},
    {203, 225, 28, 239, 30, 109, 154, 172, 13, 57, 63, 61, 195, 246, 0, 201},
    {246, 225, 160, 239, 47, 243, 154, 172, 76, 158, 63, 61, 195, 246, 210, 201}};

typedef struct {
    uint8_t a[16];
    uint8_t b[16];
    uint8_t expect[16];
} test_mm_min_epu8_data_model;
static test_mm_min_epu8_data_model g_test_mm_min_epu8_data = {
    {246, 10,  160, 160, 47,  243, 45,  128, 76,  158, 44, 44, 26, 145, 210, 76},
    {203, 225, 28, 239, 30, 109, 154, 172, 13,  57,  63,  61, 195, 246, 0, 201},
    {203, 10, 28, 160, 30, 109, 45, 128, 13, 57, 44, 44, 26, 145, 0, 76}};

typedef struct {
    int32_t a[8];
    int32_t b[8];
    int32_t expect[8];
} test_mm256_max_epi32_data_model;
static test_mm256_max_epi32_data_model g_test_mm256_max_epi32_data = {
    {1, 16516, -21313, -545454, -2147483648, 313213, -1695550175, -486101411},
    {1, 321321, -113132, 1321564, 2147483647, -13213211, 25646321, -1277938685},
    {1, 321321, -21313, 1321564, 2147483647, 313213, 25646321, -486101411,}};

typedef struct {
    int32_t a[16];
    int32_t b[16];
    int32_t expect[16];
} test_mm512_max_epi32_data_model;
static test_mm512_max_epi32_data_model g_test_mm512_max_epi32_data = {
    {1, 16516, -21313, -545454, -2147483648, 313213, -1695550175, -486101411, 1, 16516, -21313, -545454, -2147483648,
     313213, -1695550175, -486101411},
    {1, 321321, -113132, 1321564, 2147483647, -13213211, 25646321, -1277938685, 1, 321321, -113132, 1321564, 2147483647,
     -13213211, 25646321, -1277938685},
    {1, 321321, -21313, 1321564, 2147483647, 313213, 25646321, -486101411, 1, 321321, -21313, 1321564, 2147483647, 
     313213, 25646321, -486101411}};

typedef struct {
    int16_t a[8];
    int16_t b[8];
    int16_t expect[8];
} test_mm_packs_epi16_data_model;
static test_mm_packs_epi16_data_model g_test_mm_packs_epi16_data = {
    {-1, -18716, 7272, 1, -28335, -3286, -19673, -26955},
    {12271, 2, 30699, -5904, 22925, 28211, -5074, 14008},
    {-32513, 383, -32640, -32640, 639, -32641, 32639, 32640}};

typedef struct {
    int32_t a[4];
    int32_t b[4];
    int32_t expect[4];
} test_mm_packs_epi32_data_model;
static test_mm_packs_epi32_data_model g_test_mm_packs_epi32_data = {
    {1, 16516, -21313, -545454},
    {1, 321321, -113132, 1321564},
    {1082392577, -2147439425, 2147418113, 2147450880}};

typedef struct {
    int32_t a[8];
    int32_t b[8];
    int32_t expect[8];
} test_mm256_packs_epi32_data_model;
static test_mm256_packs_epi32_data_model g_test_mm256_packs_epi32_data = {
    {1, 16516, -21313, -545454, -2147483648, 313213, -1695550175, -486101411},
    {1, 321321, -113132, 1321564, 2147483647, -13213211, 25646321, -1277938685},
    {1082392577, -2147439425, 2147418113, 2147450880, 2147450880, -2147450880, -2147450881, -2147450881}};

typedef struct {
    int32_t a[16];
    int32_t b[16];
    int32_t expect[16];
} test_mm512_packs_epi32_data_model;
static test_mm512_packs_epi32_data_model g_test_mm512_packs_epi32_data = {
    {1, 16516, -21313, -545454, -2147483648, 313213, -1695550175, -486101411,
     -1, -18716, 7272, 1, -28335, -3286, -19673, -26955},
    {1, 321321, -113132, 1321564, 2147483647, -13213211, 25646321, -1277938685,
     12271, 2, 30699, -5904, 22925, 28211, -5074, 14008},
    {1082392577, -2147439425, 2147418113, 2147450880, 2147450880, -2147450880, -2147450881, -2147450881,
     -1226506241, 72808, 143343, -386893845, -215314095, -1766477017, 1848859021, 918088750}};

typedef struct {
    size_t size;
    size_t align;
} test_mm_malloc_data_model;
static test_mm_malloc_data_model g_test_mm_malloc_data = {128, 128};

#endif
